From 5437d8f85c2c840890fd89028d1c437dfe174a40 Mon Sep 17 00:00:00 2001 From: Alex Thomassen Date: Thu, 8 Nov 2018 12:12:13 +0100 Subject: [PATCH] =?UTF-8?q?=C3=98vingsoppgaver:=20for?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sketch_nov01a-LEDDimming.ino | 40 ++++ .../sketch_nov01b-millis.ino | 17 ++ .../.vscode/arduino.json | 5 + .../.vscode/c_cpp_properties.json | 16 ++ .../sketch_nov08a-ForArraysStuff.ino | 191 ++++++++++++++++++ 5 files changed, 269 insertions(+) create mode 100644 Sketches/sketch_nov01a-LEDDimming/sketch_nov01a-LEDDimming.ino create mode 100644 Sketches/sketch_nov01b-millis/sketch_nov01b-millis.ino create mode 100644 Sketches/sketch_nov08a-ForArraysStuff/.vscode/arduino.json create mode 100644 Sketches/sketch_nov08a-ForArraysStuff/.vscode/c_cpp_properties.json create mode 100644 Sketches/sketch_nov08a-ForArraysStuff/sketch_nov08a-ForArraysStuff.ino diff --git a/Sketches/sketch_nov01a-LEDDimming/sketch_nov01a-LEDDimming.ino b/Sketches/sketch_nov01a-LEDDimming/sketch_nov01a-LEDDimming.ino new file mode 100644 index 0000000..8d76b33 --- /dev/null +++ b/Sketches/sketch_nov01a-LEDDimming/sketch_nov01a-LEDDimming.ino @@ -0,0 +1,40 @@ +unsigned long time; +int lysstyrke = 255; +int ledPIN = 3; +int bryterPINpluss = 12; +int bryterPINminus = 8; + +void setup() +{ + Serial.begin(9600); + pinMode(3, OUTPUT); // Seter pinne 3 til å være output + pinMode(bryterPINminus, INPUT_PULLUP); // Seter pinne 1 til å være input + pinMode(12, INPUT_PULLUP); // Setter pinne 12 til å være input +} + +void loop() +{ + if (digitalRead(bryterPINminus) == LOW) { + lysstyrke--; // HVIS(If)knappen på pinne 1 er trykket på skal lyset reduseres + } + + if (lysstyrke < 0) { + lysstyrke = 0; //Gjør så lyset ikke går under 0 + } + + if (digitalRead(bryterPINpluss) == LOW) { + lysstyrke++; //HVIS(If)knappen på pinne 12 er trykket på skal lyset økes + } + + if (lysstyrke > 255) { + lysstyrke = 255; // Gjør så lysstyrken ikke går høyere enn 255, over 255 blir den regnet som 0 + } + + analogWrite(ledPIN, lysstyrke); // Setter pinne 3 til den oppgitte lysstyrken=100 + + Serial.print("Time: "); + time = millis(); + + Serial.println(time); + delay(10); +} diff --git a/Sketches/sketch_nov01b-millis/sketch_nov01b-millis.ino b/Sketches/sketch_nov01b-millis/sketch_nov01b-millis.ino new file mode 100644 index 0000000..7770892 --- /dev/null +++ b/Sketches/sketch_nov01b-millis/sketch_nov01b-millis.ino @@ -0,0 +1,17 @@ +unsigned long timeNow; +unsigned long timeLast = millis(); + +void setup() +{ + Serial.begin(9600); +} + +void loop() +{ + timeNow = millis(); + + if ((timeLast + 1000) <= timeNow) { + Serial.println(timeNow); + timeLast = timeNow; + } +} diff --git a/Sketches/sketch_nov08a-ForArraysStuff/.vscode/arduino.json b/Sketches/sketch_nov08a-ForArraysStuff/.vscode/arduino.json new file mode 100644 index 0000000..6f56463 --- /dev/null +++ b/Sketches/sketch_nov08a-ForArraysStuff/.vscode/arduino.json @@ -0,0 +1,5 @@ +{ + "board": "arduino:avr:uno", + "port": "COM7", + "sketch": "sketch_nov08a-ForArraysStuff.ino" +} \ No newline at end of file diff --git a/Sketches/sketch_nov08a-ForArraysStuff/.vscode/c_cpp_properties.json b/Sketches/sketch_nov08a-ForArraysStuff/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c7bc753 --- /dev/null +++ b/Sketches/sketch_nov08a-ForArraysStuff/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "C:\\Program Files (x86)\\Arduino\\tools\\**", + "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\**" + ], + "forcedInclude": [ + "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino\\Arduino.h" + ], + "intelliSenseMode": "msvc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/Sketches/sketch_nov08a-ForArraysStuff/sketch_nov08a-ForArraysStuff.ino b/Sketches/sketch_nov08a-ForArraysStuff/sketch_nov08a-ForArraysStuff.ino new file mode 100644 index 0000000..6216682 --- /dev/null +++ b/Sketches/sketch_nov08a-ForArraysStuff/sketch_nov08a-ForArraysStuff.ino @@ -0,0 +1,191 @@ +// Basic for loop +void forLoop() +{ + for (int i = 0; i < 10; i++) + { + Serial.println(i); + } +} + +/** + * Oppgave 1 + * + * • Lag et array der elementene har startverdiene 10, 3, 6, 100, 251, 228, -3, 50 + * • På egen linje og ved bruk av arrayen skal du skriv verdiene 3 og 228 til «seriell overvåker» vinduet, deretter skal det 5. elementet i arrayen skrives ut på en ny linje. + */ +void setArray() +{ + int list[] = {10, 3, 6, 100, 251, 228, -3, 50}; + + Serial.print(list[1]); + Serial.print(" "); + Serial.println(list[5]); + + Serial.println(list[4]); +} + +/** + * Oppgave 3 + * + * • Opprett en array for 10 elementer. + * • Tilordne verdier til alle elementene, gjør dette i setup-rutinen. (Du velger verdier selv) + * • Bruk FOR-utrykket for å skrive ut verdiene til alle elementene i arrayen på en linje, neste «runde» skal skrives ut på en ny linje. + */ +void tiElementer() { + int tiElementer[10] = {10, 3, 6, 100, 251, 228, -3, 50, 64378, 45645}; + + for (int i = 0; i < (sizeof(tiElementer) / sizeof(int)); i++) + { + Serial.println(tiElementer[i]); + } +} + +/** + * Oppgave 4 + * + * • Opprett en array for 10 elementer som gis følgende verdier ved deklarasjonen 10, 50, 70, -10, 15, 132, 5, -32, 87, 3 + * • Bruk arrayen, FOR-uttrykk og IF til å sjekke om verdien i arrayen er større enn 25, hvis den er større enn 25 skal verdien skrives ut på «seriell overvåking» vinduet. En verdi pr.linje. + * + * Oppgave 5 + * • Bruke arrayen fra oppgave 4. + * • Regn ut gjennomsnittetsverdien m/desimaler og skriv denne ut på «seriell overvåker» vinduet EN gang. + * + * Oppgave 6 + * • Bruke arrayen fra oppgave 4. + * • Bruke FOR og skriv ut verdiene i omvendt rekkefølge på en linje i «seriell overvåker» vinduet, neste «runde» skal skrives ut på en ny linje. + Omvendtrekkefølge vil si at du starter med det siste elementet i arrayen. + */ +void arrayForIf() { + int elements[10] = {10, 50, 70, -10, 15, 132, 5, -32, 87, 3}; + float total = 0; + int elemLength = (sizeof(elements) / sizeof(int)); + + // Serial.println("Tall mer enn 25: "); + // for (int i = 0; i < (elemLength); i++) + // { + // int value = elements[i]; + // total += value; + + // if (value < 25) { + // continue; + // } + + // Serial.println(value); + // } + + // Serial.print("Gjennomsnitt: "); + // Serial.println((total / elemLength)); + + for (int i = (elemLength - 1); i > -1; i--) { + int value = elements[i]; + + if (i != (elemLength - 1)) { + Serial.print(", "); + } + + Serial.print(value); + + if (i == 0) { + Serial.println(); + } + } +} + +/** + * Oppgave 7 + * + * • Lag et array der elementene har startverdiene 10, -10, 18, 17, 200, 51, 33, 73 + * • Hent verdien fra arrayen og skriv ut til «seriell overvåker» vinduet i henhold til følgende regler. Dette skal bare «skrives ut» EN gang. + * + * Når elementnr. er Skriv ut på egen linje etter følgende regler + * All utregning skal gjøres av Uno. + * 0 verdien ganges 3 + * 1 absoluttverdien av verdien + * 2 verdien ganges først med 5 for så å deles på 4 + * 3 verdien opphøyd i 3. + * 4 kvadratroten av verdien + * 5 Rest etter en heltallsdivisjon, del på 4. + * 6 Finn den største verdien i arrayen. + * 7 verdien deles på 2 + * + * • Til slutt: Verifiser virkemåte med å gi elementene i arrayen andre startverdier. + */ +void arraySwitch() { + int xD[] = {10, -10, 18, 17, 200, 51, 33, 73}; + // Antall elementer i array + int listLength = (sizeof(xD) / sizeof(int)); + + // Hent ut høyeste verdi fra array + int maxValue = 0; + for (int bleh = 0; bleh < listLength; bleh++) + { + maxValue = max(maxValue, xD[bleh]); + } + + // Switch case + for (int i = 0; i < listLength; i++) + { + float element = xD[i]; + float value = 0.0; + + Serial.print("Index: "); + Serial.println(i); + + Serial.print("Element: "); + Serial.println(element); + switch (i) + { + case 0: + // Gang med 3 + value = element * 3; + break; + case 1: + // Absolutt tall + value = abs(element); + break; + case 2: + // Gang med 5, del på 4. + value = ((element * 5) / 4); + break; + case 3: + // "power of", opphøyd i + value = pow(element, 3); + break; + case 4: + // "square root", kvadratroot + value = sqrt(element); + break; + case 5: + // "Modulo", differansen mellom nærmeste tallet som kan deles på 4. + value = (int) element % 4; + break; + case 6: + // Høyeste verdi i array, se forrige for loop + value = maxValue; + break; + case 7: + // delt på 2 + value = (element / 2); + break; + } + + Serial.println(value); + } +} + +void setup() +{ + Serial.begin(9600); + + // forLoop(); + // setArray(); + + // tiElementer(); +} + +void loop() +{ + // arrayForIf(); + arraySwitch(); + delay(30000000); +}