Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Denne sketch er testet på en Arduino UNO
- *
- * Sketchen benyttes til at teste at loop() kører, ved at blinke den indbyggede LED
- *
- * Derudover så vises noget debug info på SerialMonitor, én gang i sekundet
- *
- */
- // Konstanter, informationer der aldrig ændrer sig
- // Fortæller hvilke udgange der bruges:
- const int led1Pin = 4; // nummret på udgangen lysdiode 1 er koblet til
- const int led2Pin = 3; // nummret på udgangen lysdiode 2 er koblet til
- // Variabler for udgang 1 som ændrer sig under gennemløb af program:
- int led1State = HIGH; // Status på udgangen, er den tændt (HIGH) eller slukket (LOW)
- unsigned long previousMillis_1 = 0; // Tidspunkt for, hvornår udgangen sidst skiftede status
- int interval_1_min = 25; // Korteste tidsinterval for lysdiode tændt eller slukket
- int interval_1_max = 55; // Længeste tidsinterval for lysdiode tændt eller slukket
- unsigned long interval_1 = 1;
- // Variabler for udgang 2 som ændrer sig under gennemløb af program:
- int led2State = HIGH; // Status på udgangen, er den tændt (HIGH) eller slukket (LOW)
- unsigned long previousMillis_2 = 0; // Tidspunkt for, hvornår udgangen sidst skiftede status
- int interval_2_min = 15; // Korteste tidsinterval for lysdiode tændt eller slukket
- int interval_2_max = 30; // Længeste tidsinterval for lysdiode tændt eller slukket
- unsigned long interval_2 = 1;
- // Variabler for debug info via SerialMonitor
- unsigned long currentMillis = 0;
- unsigned long previousDebugMillis = 0; // Tidspunkt for, hvornår sidste SerialMonitor debug update blev skrevet
- unsigned long intervalDebug = 1000; // Opdater SerialMonitor hvert sekund
- int ledDebugState = HIGH;
- //**********************//
- void setup() {
- // put your setup code here, to run once:
- pinMode(led1Pin, OUTPUT);
- // Når der testes på Arduino UNO så benyttes den indbyggede LED (på pin 13) og SerialPort
- setupDebug();
- } // END setup()
- //**********************//
- void loop() {
- // Gem millis() i en variabel
- currentMillis = millis();
- // Når der testes på Arduino UNO så benyttes den indbyggede LED (på pin 13), samt Seriel porten, til at give noget debug info
- debugInfo();
- // Ser efter om det er tid til at skifte status på udgang 1
- // Gøres ved at se om forskellem mellem aktuel tid og tidspunktet
- // for sidste skift er større end det satte interval
- if(currentMillis - previousMillis_1 > interval_1) {
- // gemmer sidste gang udgangen skiftede
- previousMillis_1 = currentMillis;
- // hvis udgangen er slukket tænde den og omvendt:
- if (led1State == LOW)
- led1State = HIGH;
- else
- led1State = LOW;
- // sætter udgangen med værdien af led1State (HIGH/LOW):
- digitalWrite(led1Pin, led1State);
- // sætter interval_1 til en ny tilfældig værdi mellem min og max
- interval_1 = random(interval_1_min, interval_1_max);
- // konverter interval til milli sekunder
- interval_1 = interval_1 * 10; // vælg at gange med 1, 10, 100 eller 1000 afhængigt af hvor lang tid der ønskes mellem hvert blink
- }
- ////// 2
- // Ser efter om det er tid til at skifte status på udgang 2
- // Gøres ved at se om forskellem mellem aktuel tid og tidspunktet
- // for sidste skift er større end det satte interval
- if(currentMillis - previousMillis_2 > interval_2) {
- // gemmer sidste gang udgangen skiftede
- previousMillis_2 = currentMillis;
- // hvis udgangen er slukket tænde den og omvendt:
- if (led2State == LOW)
- led2State = HIGH;
- else
- led2State = LOW;
- // sætter udgangen med værdien af led1State (HIGH/LOW):
- digitalWrite(led2Pin, led2State);
- // sætter interval_2 til en ny tilfældig værdi mellem min og max
- interval_2 = random(interval_2_min, interval_2_max);
- // konverter interval til milli sekunder
- interval_2 = interval_2 * 10; // vælg at gange med 1, 10, 100 eller 1000 afhængigt af hvor lang tid der ønskes mellem hvert blink
- }
- } // END loop()
- //****** Debug specific functions ****************//
- void setupDebug() {
- pinMode(LED_BUILTIN, OUTPUT);
- // initialize serial communication at 115200 bits per second:
- Serial.begin(115200);
- } // END setupDebug()
- void debugInfo() {
- // Se efter om det er tid til at opdater SerialMonitor
- if(currentMillis - previousDebugMillis > intervalDebug) {
- //Gem tiden da Serial Monitor blev opdateret
- previousDebugMillis = currentMillis;
- //// Vis at der er liv i programmet
- // skift LED debug state
- ledDebugState = !ledDebugState;
- // sætter udgangen med værdien af led1State (HIGH/LOW):
- digitalWrite(LED_BUILTIN, ledDebugState);
- //// Vis noget debug info via SerialMonitor
- Serial.print( F("Int_1: ") ); // Funktionen F() holder "tekst" i Flash Memory only
- Serial.println(interval_1);
- Serial.print( F("Int_2: ") );
- Serial.println(interval_2);
- Serial.println();
- }
- } // END debugInfo()
Add Comment
Please, Sign In to add comment