2012-10-21, 19:01
#1
Sitter och programmerar mot en arduino UNO. Ett väldigt enkelt kort, men jag har lite problem att felsöka när jag kodar. Vanligtvis när jag programmerar i ADA eller visual studios så brukar jag lägga in ett "hello world" för att se vart programmet "tar vägen" så att säga. Det blir väldigt enkelt att felsöka då.
Men med mitt kort så har jag ingen display utan jag får använda mig utav en enda led lampa. Går det på något sätt att få kortet att skriva ut saker i cmd till exempel? Detta är egentligen inte jätte viktigt men det skulle underlätta för framtiden.
Men till min huvudsakliga fråga, jag försöker skapa ett program som skickar ut en signal i 20 min då jag får in en viss spänning på en port. Med andra ord försöker jag hantera timer funktionen "millis()" men det går inte jätte bra.
angående if-satsen
current_time_1 är ju vilket värde millis() har när jag bestämmer mig för att sätta igång timern. Sedan adderar jag x antal millisekunder till detta och får då ett värde som jag väntar på att millis() ska överstiga. När den gör det vet jag att det har gått x antal millisekunder.
Men varför fungerar inte min kod?
Men med mitt kort så har jag ingen display utan jag får använda mig utav en enda led lampa. Går det på något sätt att få kortet att skriva ut saker i cmd till exempel? Detta är egentligen inte jätte viktigt men det skulle underlätta för framtiden.
Men till min huvudsakliga fråga, jag försöker skapa ett program som skickar ut en signal i 20 min då jag får in en viss spänning på en port. Med andra ord försöker jag hantera timer funktionen "millis()" men det går inte jätte bra.
Kod:
#include "Arduino.h" int minutes_1 = 60000; int minutes_20 = 1200000; int minutes_240 = 14400000; int current_time_1; int current_time_2; int timer_running_1 = 0; int timer_running_2 = 0; int led = 13; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { int sensorValue_A0 = analogRead(A0); float Voltage_A0 = sensorValue_A0*(5.0/1023.0); // läser in signalen på port A0 int sensorValue_A1 = analogRead(A1); float Voltage_A1 = sensorValue_A1*(5.0/1023.0); // läser in signalen på port A1 if(Voltage_A0 > 4) // kontrollerar om det är över 4 volt jag får in { timer_running_1 = 1; // sätter igång ett vilkor för att börja köra den första timern current_time_1 = millis(); // kollar vilken millisekund det är just nu } if(Voltage_A1 > 4) { timer_running_2 = 1; // sätter igång ett vilkor för att börja köra den andra timern current_time_2 = millis(); // kollar vilken millisekund det är just nu } if (timer_running_1 == 1) { if((long)(millis() - (minutes_20 + current_time_1)) >= 0) // när det har gått 20 min så går vi in och bryter signalen { digitalWrite(led, LOW); timer_running_1 = 0; } else digitalWrite(led, HIGH); } if (timer_running_2 == 1) { if((long)(millis() - (minutes_240 + current_time_2)) >= 0) // när det har gått 240 min så går vi in och bryter signalen { digitalWrite(led, LOW); timer_running_2 = 0; } else digitalWrite(led, HIGH); } }
angående if-satsen
Kod:
if((long)(millis() - (minutes_20 + current_time_1)) >= 0)
current_time_1 är ju vilket värde millis() har när jag bestämmer mig för att sätta igång timern. Sedan adderar jag x antal millisekunder till detta och får då ett värde som jag väntar på att millis() ska överstiga. När den gör det vet jag att det har gått x antal millisekunder.
Men varför fungerar inte min kod?