Arduino: Delay abbrechen?

1 Antwort

Dafür bräuchtest du entweder ein Interrupt oder du arbeitest über Zeitdifferenzen mittels Milis().

15

Okay, habs grad nochmal anders gegoogelt und bin auf "blink without delay" als Empfehlung gestoßen. Verstehe grad nur nicht ganz wo der interrupt stattfindet.

0
41
@KriegerMan

Das wäre etwas anderes, dabei wird das Programm auf ein Signal hin unterbrochen und eine Unterbrechungsroutine (ISR) ausgeführt. In deinem Fall wäre der Weg über die Differenz wie du schon richtig gegoogelt hast der sinnvollere.

0

Arduino-IDE 1.6.13 Fehlermeldung?

Hi,

habe mir vor kurzem die neueste Version (s.O.) der Arduino-IDE installiert, allerdings bekomme ich beim kompillieren / hochladen auf den Arduino folgende Fehlermeldung(Dabei ist es egal welchen Sketch ich verwende)

java.io.IOException: Cannot run program "___REMOVE___/bin/avrdude": CreateProcess error=2, Das System kann die angegebene Datei nicht findenat java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)at processing.app.helpers.ProcessUtils.exec(ProcessUtils.java:26)at cc.arduino.packages.Uploader.executeUploadCommand(Uploader.java:129)at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:207)at cc.arduino.UploaderUtils.upload(UploaderUtils.java:78)at processing.app.SketchController.upload(SketchController.java:709)at processing.app.SketchController.exportApplet(SketchController.java:682)at processing.app.Editor$DefaultExportHandler.run(Editor.java:2189)at java.lang.Thread.run(Thread.java:745)Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht findenat java.lang.ProcessImpl.create(Native Method)at java.lang.ProcessImpl.(ProcessImpl.java:386)at java.lang.ProcessImpl.start(ProcessImpl.java:137)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)... 8 moreBeim Hochladen des Sketches ist ein Fehler aufgetreten

Mfg Thies

...zur Frage

Arduino delay für eine Sekunde?

Hallo, ich wollte eine Uhr für einen display programmieren und diese mit einer Fernbedinung ansteuern. Nur habe ich ein Problem, meine Uhr ist etwas langsamer als eine normale Uhr (Atomuhr). Obwohl ich einen Delay von 1000 habe.

ich bin im besitz des Arduino elegoo Mega 2560

Falls es interessant ist, kopiere ich hier den kompletten code:

#include <LiquidCrystal.h>

#include "IRremote.h"

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int offTimer;

int onTimer;

int s=15; //sekunden

int m=49; //minuten

int h=19; //stunden

int tag=3; //tage

int monat=6; //monate

int jahr=2018; //Jahr

int receiver = 6;

int lcdsize[] = {16, 2};

IRrecv irrecv(receiver);    

decode_results results;    

void translateIR() // takes action based on IR code received

// Beschreibt Remote-IR-Codes

{

 switch(results.value)

 {

 case 0xFFA25D: onTimer++; offTimer=0; break;

 case 0xFFE21D: offTimer++; onTimer=0; break;

 case 0xFF629D: Serial.println("VOL+"); break;

 case 0xFF22DD: Serial.println("FAST BACK");   break;

 case 0xFF02FD: Serial.println("PAUSE");   break;

 case 0xFFC23D: Serial.println("FAST FORWARD");  break;

 case 0xFFE01F: Serial.println("DOWN");   break;

 case 0xFFA857: Serial.println("VOL-");   break;

 case 0xFF906F: Serial.println("UP");   break;

 case 0xFF9867: Serial.println("EQ");   break;

 case 0xFFB04F: Serial.println("ST/REPT");   break;

 case 0xFF6897: Serial.println("0");   break;

 case 0xFF30CF: Serial.println("1");   break;

 case 0xFF18E7: Serial.println("2");   break;

 case 0xFF7A85: Serial.println("3");   break;

 case 0xFF10EF: Serial.println("4");   break;

 case 0xFF38C7: Serial.println("5");   break;

 case 0xFF5AA5: Serial.println("6");   break;

 case 0xFF42BD: Serial.println("7");   break;

 case 0xFF4AB5: Serial.println("8");   break;

 case 0xFF52AD: Serial.println("9");   break;

 case 0xFFFFFFFF: Serial.println(" REPEAT");break; 

 default:

   Serial.println(" other button  ");

 }

}

void setup() {

irrecv.enableIRIn(); // Startet den Empfänger

lcd.begin(lcdsize[0], lcdsize[1]);

}

void loop() {

 if (irrecv.decode(&results)) // Haben wir ein IR-Signal erhalten?

 {

   translateIR();

   irrecv.resume(); // Erhalte den nächsten Wert

 } 

 delay(990);

 lcd.clear();

 lcd.setCursor(0, 0);

 lcd.print("----");

 if(h<10){

 lcd.print("0");

 }

 lcd.print(h);

 lcd.print(":");

 if(m<10){

 lcd.print("0");

 }

 lcd.print(m);

 lcd.print(":");

 if(s<10){

 lcd.print("0");

 }

 lcd.print(s);

 lcd.print("----");

 lcd.setCursor(0, 1);

 if(tag<10){

 lcd.print("0");

 }

 lcd.print(tag);

 lcd.print(".");

 if(monat<10){

 lcd.print("0");

 }

 lcd.print(monat);

 lcd.print(".");

 lcd.print(jahr);

 s++;

 if(s>=60){

 m++;

 s=0;

 }

 if(m>=60){

 h++;

 m=0;

 }

 if(h>=24){

 tag++;

 h=0;

 }

 if(tag==31&monat==4){

 monat++;

 tag=1;

 }

 if(tag==31&monat==6){

 monat++;

 tag=1;

 }

 if(tag==31&monat==9){

 monat++;

 tag=1;

 }

ab hier kommen noch ca. 40 weitere Zeilen.

...zur Frage

Was möchtest Du wissen?