Guten Tag liebe Arduinos und Arduinas ( ), mein Paket ist nun letzte Woche endlich angekommen und natürlich habe ich direkt einige Sachen damit angestellt.
Nun bin ich bei meinem ersten Problem angekommen und wollte fragen wie ich es lösen könnte, bzw. wo genau denn mein Fehler liegt.
Ich habe 6 LEDs, einen Taster und einen Poti und möchte diese LEDs mit zwei Modi beschalten, der eine wäre ein Lauflicht und der zweite Modus ist, das einzelne Beschalten der LEDs mit dem Poti(den 10Bit Wert mappen zu den Werten 2-7).
Bei dem ersten Modus möchte ich die Laufgeschwindigkeit mit dem Poti einstellen, im einzelnen Funktioniert dies auch wunderbar, jedoch möchten sich die Modi nicht umstellen lassen schnief.
Vielen Dank im vor raus Joshi.
int pot = 0;
int led = 0;
int tastMode = 0;
int tast = 12;
boolean status;
void setup() {
Serial.begin(9600);
for(int i = 2; i <=7; i++){
pinMode(i, OUTPUT);
}
pinMode(tast,INPUT);
digitalWrite(tast,HIGH);
}
void loop() {
pot = analogRead(0);
led = map(pot,0, 1023, 2, 7);
//Serial.println(led);
int val = digitalRead(tast);
if(status != val) {
if(val) {
tastMode = !tastMode;
}
status = val;
delay(50);
}
if(tastMode == 0){
for(int l = 2; l <= 7; l++){
digitalWrite(l, LOW);
if(l==led){
digitalWrite(l, HIGH);
}
}
}else{
for(int i = 2; i <= 7; i++){
digitalWrite(i, HIGH);
delay(pot);
digitalWrite(i, LOW);
}
for(int i = 7; i >= 2; i--){
digitalWrite(i HIGH);
delay(pot);
digitalWrite(i, LOW);
}
}
}
Ja an "tast" hängt ein Taster, welchen ich mit folgendem "Code-Abteil" zu einem prophylaktischem Schalter umfunktioniert habe:
int val = digitalRead(tast);
if(status != val) {
if(val) {
tastMode = !tastMode;
}
status = val;
delay(50);
}
Okay ich probiere es morgen mit dem anderen Datentyp aus.
Ich habe es nach anderthalb Wochen Verspätung bekommen.
Ich wünsche dir viel Glück und hoffentlich kommt deine Bestellungen bald bei dir an!
Noch mal eine Frage zu einem ganz anderem Thema, für welches ich nicht unbedingt einen neuen Thread eröffnen möchte, gibt es Distanz-Sensoren welche weiter messen können und dabei präziser bleiben als solch billige Schallsensoren?
Exwarilor:
Noch mal eine Frage zu einem ganz anderem Thema, für welches ich nicht unbedingt einen neuen Thread eröffnen möchte, gibt es Distanz-Sensoren welche weiter messen können und dabei präziser bleiben als solch billige Schallsensoren?
In welchem Verhältnis teurer?
Zum allgemeinem Sensor-Kauf, lohnen sich seiten wie SparkFun und Adafruit? Oder sollte man ausschließlich bei Ebay schauen?
Weder noch, da musst du schon wohl eher bei Herstellern anfragen, ggf. haben die Elektronik-Großhändler (digikey, Mouser, farnell) etwas. Such mal in Richtung Lasermessung. Preise beginnend bei ~100€
Jedoch würde ich von dem Verfahren abraten und versuchen mit den US-Sensoren glücklich zu werden. Um das System der Messung zu verstehen und vorallem anwenden zu können, bedarf es schon eines recht guten Sketches, denn die Zeitmessungen sind sehr kritisch im Timing.
Okay vielen Dank schonmal für die Antwort, ich denke, dass es auch nicht so relevant ist, war nur der Interesse halber.
Eine letzte Frage habe ich noch, wo kriege ich am günstigsten RGB-LEDs egal ob diffused oder nicht, ist auch nicht wichtig welche Größe oder Form.
Nochmal zum Sketch: Der optimierende Compiler ist auch tolerant, so daß Deine Typdefinitionen keinen Einfluß auf den Programmablauf haben. Auch das Umschalten von tastmode funktioniert. Dazu habe ich tastmode auf einer LED ausgegeben und delay(pot); auskommentiert. Bei jeder LOW-HIGH Flanke des Tasters wird tastmode umgeschaltet.
Ursächlich für das unerwartete Verhalten ist also delay(pot);. Eine schnelle Reaktion auf einen Taster und delay() passen halt nicht zueinander.