/* Dit is een oefening om parallelle taken te maken te beginnen met duoknoppen opdracht. In deze sketch zijn alle settings voor de knoppen (en eventueel een Rotary knop), LCD display LED en speaker gedefinieerd en geïnitialiseerd in de functie setup(). https://www.arduino.cc/en/Reference/LiquidCrystal */ #define debug true #define speaker 6 // kan met een analogWrite een 1000 hz piep toon laten horen #define rotary_push 7 // rotary drukknop #define rotary_pulse_A 8 // rotary puls A #define rotary_pulse_B 10 // rotary puls B #define rechts_boven 7 // knop recht_boven is verbonden met digital pin 7 #define rechts_beneden 8 // knop recht_boven is verbonden met digital pin 8 #define links_boven 9 // knop recht_boven is verbonden met digital pin 9 #define links_beneden 10 // knop recht_boven is verbonden met digital pin 10 #define led 13 // LED verbonden met digital pin 13 #define knoppen_lees_periode 10 // tijd in milli seconden // include the library codes: #include // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to // const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //int cursor_positie_speaker; // gebruikt voor LCD cursor positie //int cursor_positie_led; // gebruikt voor LCD cursor positie unsigned long huidige_milli_seconden; //unsigned int uren,minuten,seconden,milli_seconden,micro_seconden; //unsigned long vorige_milli_seconden,ronde_tijd,stopwatch_tijd,stopwatch_tijd_oud; boolean rechts_boven_ingedrukt = false; //boolean rechts_beneden_ingedrukt = false; boolean links_boven_ingedrukt = false; //boolean links_beneden_ingedrukt = false; boolean led_aan = false; boolean speaker_aan = false; //boolean status_verandering_verwerkt = false; // // unsigned long knoppen_lees_tijd; // is tijd (in milli seconden) wanneer de knoppen moeten worden uitgelezen unsigned long loop_teller, loopcteller_vorige, loop_teller_tijd; void setup() { lcd.begin(16, 2); // set up the LCD's number of columns and rows: lcd.print("LCD4DLS unit"); // Print a message to the LCD. Serial.begin(115200); pinMode(led, OUTPUT); pinMode(links_boven, INPUT); pinMode(links_beneden, INPUT); pinMode(rechts_boven, INPUT); pinMode(rechts_beneden, INPUT); // loop_teller = 0; // cursor_positie_speaker = 0; // arde cursor_positie // cursor_positie_led = 9; // aarde cursor_positie // knoppen_lees_tijd = 1; // startwaarde while (digitalRead(rotary_pulse_A) || digitalRead(rotary_pulse_B)) // rotery knop staat verkeerd { analogWrite(speaker,127); // laat een piep horen lcd.setCursor(0, 1); // set the cursor to column 0, line 1 lcd.print("Draai aan Rotary"); // display waarschuwing } digitalWrite(speaker,LOW); // zet piep uit lcd.setCursor(0, 1); // set the cursor to column 0, line 1 lcd.print(" "); // verwijder waarschuwing knoppen_lees_tijd = millis(); +1000; } void loop() { /********************************************************** * taak om de het aantal keren dat de loop wordt doorlopen naar de seriele monitor te sturen. * */ loop_teller++; huidige_milli_seconden = millis(); if (huidige_milli_seconden > loop_teller_tijd) { loop_teller_tijd = loop_teller_tijd +1000; Serial.print("loopteller = "); Serial.println(loop_teller - loopcteller_vorige); loopcteller_vorige = loop_teller; } if ( huidige_milli_seconden > knoppen_lees_tijd) { knoppen_lees_tijd = knoppen_lees_tijd +100; if (digitalRead(rechts_boven)) { if (rechts_boven_ingedrukt == false) { rechts_boven_ingedrukt = true; if (led_aan) { led_aan = false; digitalWrite(led,LOW); } else { led_aan = true; digitalWrite(led,HIGH); } } } else { rechts_boven_ingedrukt = false; } } /********************************************************** * Taken om de bovenste knoppen uit te lezen en de lED en/of de speaker aan te sturen. De drukknoppen hebben de naam "rechts_boven", * en "links_boven". * */ if (digitalRead(links_boven)) { if (links_boven_ingedrukt == false) { links_boven_ingedrukt = true; if (speaker_aan) { speaker_aan = false; digitalWrite(speaker,LOW); } else { speaker_aan = true; analogWrite(speaker, 127); } } } else { links_boven_ingedrukt = false; } /********************************************************** * Taak om de onderste knoppen uit te lezen en de lED en/of de speaker aan te sturen. De drukknoppen hebben de naam * "rechts_beneden" en "links_beneden". * */ }