Øvingsoppgaver: for

This commit is contained in:
Alex Thomassen 2018-11-08 12:12:13 +01:00
parent d6edf2f3f9
commit 5437d8f85c
5 changed files with 269 additions and 0 deletions

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -0,0 +1,5 @@
{
"board": "arduino:avr:uno",
"port": "COM7",
"sketch": "sketch_nov08a-ForArraysStuff.ino"
}

View File

@ -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
}

View File

@ -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
* 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 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 en linje, neste «runde» skal skrives ut 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 «seriell overvåking» vinduet. En verdi pr.linje.
*
* Oppgave 5
* Bruke arrayen fra oppgave 4.
* Regn ut gjennomsnittetsverdien m/desimaler og skriv denne ut «seriell overvåker» vinduet EN gang.
*
* Oppgave 6
* Bruke arrayen fra oppgave 4.
* Bruke FOR og skriv ut verdiene i omvendt rekkefølge en linje i «seriell overvåker» vinduet, neste «runde» skal skrives ut 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 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 å deles 4
* 3 verdien opphøyd i 3.
* 4 kvadratroten av verdien
* 5 Rest etter en heltallsdivisjon, del 4.
* 6 Finn den største verdien i arrayen.
* 7 verdien deles 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);
}