Hallo
Ich hab seit gestern mein Arduino und viel Spass an der Sache. Getting started with Arduino hab ich durch (ausser die Letzte Aufgabe). Bisher haben ach meine erweiterungen der Gestellten Aufgaben funktioniert.
Nun stehe ich aber an:
(Das Projekt hat keinen Nutzen auser dem Lerneffekt)
Ein Potentiometer ist in vier Bereiche aufgeteilt:
bis val <250 leuchtet die grüne LED
bei val>250 aber <500 die Gelbe
bei val>500 aber <750 die Rote
und bei val>750 blinkt die Rote LED und ein Signalton piepst.
alles kein Problem.
Jetzt hab ich das ganze erweitert, dass ein 7digit Display angeschlossen ist das anzeigen soll wie oft der Bereich >750 erreicht wurde.
wenn dies mehr als 3 mal passiert ist blinken alle LEDs zusammen und eine Nachricht wird via SerialPort an den Computer geschickt.
wenn ich jetzt aber zum ersten mal den Bereich >750 erreiche zählt das Ding sofort bis 3 hoch. Gibts da eine Möglichkeit das erreichen eines Analogen Wertes nur einmal zu zählen, bzw. erst ein zweites mal zu zählen wenn dieser zuerst wieder unterschritten wurde?
Danke schonmal
const int GRUN = 13;
const int GELB = 12;
const int ROT = 11;
const int SPK = 10; //Lautsprecher
const int DIS1 = 53; //mitte
const int DIS2 = 51; //oben links
const int DIS3 = 49; //oben
const int DIS4 = 47; //oben rechts
const int DIS5 = 45; //unten links
const int DIS6 = 43; //unten
const int DIS8 = 39; //unten rechts
const int DIS9 = 37; //punkt
int val = 0;
int maxNum = 4;
int count = 0;
int lastCount= 0;
void setup() {
pinMode (GRUN, OUTPUT);
pinMode (GELB, OUTPUT);
pinMode (ROT, OUTPUT);
pinMode (SPK, OUTPUT);
pinMode (DIS1, OUTPUT);
pinMode (DIS1, OUTPUT);
pinMode (DIS2, OUTPUT);
pinMode (DIS3, OUTPUT);
pinMode (DIS4, OUTPUT);
pinMode (DIS5, OUTPUT);
pinMode (DIS6, OUTPUT);
pinMode (DIS8, OUTPUT);
pinMode (DIS9, OUTPUT);
Serial.begin (9600);
}
void loop() {
val = analogRead (0);
if (count == 1)
{
digitalWrite (DIS1, LOW);
digitalWrite (DIS2, LOW);
digitalWrite (DIS3, LOW);
digitalWrite (DIS4, HIGH);
digitalWrite (DIS5, LOW);
digitalWrite (DIS6, LOW);
digitalWrite (DIS8, HIGH);}
if (count == 2)
{
digitalWrite (DIS1, HIGH);
digitalWrite (DIS2, LOW);
digitalWrite (DIS3, HIGH);
digitalWrite (DIS4, HIGH);
digitalWrite (DIS5, HIGH);
digitalWrite (DIS6, HIGH);
digitalWrite (DIS8, LOW);}
if (count == 3)
{
digitalWrite (DIS1, HIGH);
digitalWrite (DIS2, LOW);
digitalWrite (DIS3, HIGH);
digitalWrite (DIS4, HIGH);
digitalWrite (DIS5, LOW);
digitalWrite (DIS6, HIGH);
digitalWrite (DIS8, HIGH);}
if (count >3)
{
digitalWrite (GRUN, HIGH);
digitalWrite (GELB, HIGH);
digitalWrite (ROT, HIGH);
delay (50);
digitalWrite (GRUN, LOW);
digitalWrite (GELB, LOW);
digitalWrite (ROT, LOW);
delay (50);
}
if (count>3)
{
Serial.print ("Nachricht 1 ");
delay (500);
Serial.print ("Nachricht 2 ");
delay (500);
Serial.print ("Nachricht 3");
delay(500);
Serial.print ("Nachricht 4 ");
delay(500);
}
if (count == 0) {
digitalWrite (DIS1, LOW);
digitalWrite (DIS2, HIGH);
digitalWrite (DIS3, HIGH);
digitalWrite (DIS4, HIGH);
digitalWrite (DIS5, HIGH);
digitalWrite (DIS6, HIGH);
digitalWrite (DIS8, HIGH);
}
if (val < 250) {
digitalWrite (GRUN, HIGH);
digitalWrite (GELB, LOW);
digitalWrite (ROT, LOW);
}
if ((val > 250)&& (val < 500)){
digitalWrite (GRUN, LOW);
digitalWrite (GELB, HIGH);
digitalWrite (ROT, LOW);
}
if ((val > 500) && (val < 750)){
digitalWrite (GRUN, LOW);
digitalWrite (GELB, LOW);
digitalWrite (ROT, HIGH);
}
if (val > 750){
digitalWrite (GRUN, LOW);
digitalWrite (GELB, LOW);
digitalWrite (ROT, HIGH);
digitalWrite (SPK, HIGH);
delay (100);
digitalWrite (ROT, LOW);
digitalWrite (SPK, LOW);
delay (100);
}
if (val > 750){
(count ++);
}
}