Ferdinand
03.03.2018, 23:24
Hallo ich habe ein problem und finde den fehler nicht habe auch schon gegoogelt um die switch() schleife nochmal zu prüfen hier mein code
// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;
int pwm = 127;
void setup() {
// put your setup code here, to run once:
pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);
pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop() {
analogWrite(PWM, pwm);
int i = 0;
int sensoren[6] = {V_LINKS,V_MITTE,V_RECHTS,H_LINKS,H_MITTE,H_RECHTS };
for (int i=0; i<5; i++){// Anweisungen
}
switch(sensoren[i])
{
case V_MITTE == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case V_LINKS == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case V_RECHTS == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
case H_MITTE == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case H_LINKS == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case H_RECHTS == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
default :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
/*if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
//delay(30);
*/
}
ohne das "== HIGH" bei denn case kann ich das program auch compeliren ich denke das es ohne vergleich auch richtig ist, irgendwas mach ich da falsch.
wen ich das Programm ohne die "== HIGH" Flashe dann springt er gleich zum zweiten case und hängt sich auf.
und es macht einen unterschid ob ich die Switch case schleife in der for schleife habe oder nicht wen ich sie nicht drin habe dan bekomme ich keine reaktion.
- - - Aktualisiert - - -
ok ich habe noch ein kleinen fehler gefunden hir nochmal mein code
// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;
int pwm = 127;
void setup() {
// put your setup code here, to run once:
pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);
pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop() {
analogWrite(PWM, pwm);
int i = 0;
int sensoren[6] = {V_LINKS,V_MITTE,V_RECHTS,H_LINKS,H_MITTE,H_RECHTS };
int wert[6];
for (int i=0; i<5; i++){// Anweisungen
wert[i] = digitalRead(sensoren[i]);
}
switch(wert[i] == LOW)
{
case V_MITTE :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case V_LINKS :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case V_RECHTS :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
case H_MITTE :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case H_LINKS :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case H_RECHTS :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
default :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
/*if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
//delay(30);
*/
}
das Problem ist das meine sensoren bei einem ereignis ein LOW bringen und ich nicht weis wie das eine Switch schleife erkennen kann.
// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;
int pwm = 127;
void setup() {
// put your setup code here, to run once:
pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);
pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop() {
analogWrite(PWM, pwm);
int i = 0;
int sensoren[6] = {V_LINKS,V_MITTE,V_RECHTS,H_LINKS,H_MITTE,H_RECHTS };
for (int i=0; i<5; i++){// Anweisungen
}
switch(sensoren[i])
{
case V_MITTE == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case V_LINKS == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case V_RECHTS == HIGH :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
case H_MITTE == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case H_LINKS == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case H_RECHTS == HIGH :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
default :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
/*if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
//delay(30);
*/
}
ohne das "== HIGH" bei denn case kann ich das program auch compeliren ich denke das es ohne vergleich auch richtig ist, irgendwas mach ich da falsch.
wen ich das Programm ohne die "== HIGH" Flashe dann springt er gleich zum zweiten case und hängt sich auf.
und es macht einen unterschid ob ich die Switch case schleife in der for schleife habe oder nicht wen ich sie nicht drin habe dan bekomme ich keine reaktion.
- - - Aktualisiert - - -
ok ich habe noch ein kleinen fehler gefunden hir nochmal mein code
// 14-19
//Sensoren
const int V_LINKS = 14;
const int V_MITTE = 15;
const int V_RECHTS = 16;
const int H_LINKS = 17;;
const int H_MITTE = 18;;
const int H_RECHTS = 19;
//Motoren
const int LINKS = 6;
const int RECHTS = 5;
const int VOR = 4;
const int ZURUECK = 2;
const int PWM = 3;
int pwm = 127;
void setup() {
// put your setup code here, to run once:
pinMode(V_LINKS, INPUT);
pinMode(V_MITTE, INPUT);
pinMode(V_RECHTS, INPUT);
pinMode(H_LINKS, INPUT);
pinMode(H_MITTE, INPUT);
pinMode(H_RECHTS, INPUT);
pinMode(LINKS, OUTPUT);
pinMode(RECHTS, OUTPUT);
pinMode(VOR, OUTPUT);
pinMode(ZURUECK, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop() {
analogWrite(PWM, pwm);
int i = 0;
int sensoren[6] = {V_LINKS,V_MITTE,V_RECHTS,H_LINKS,H_MITTE,H_RECHTS };
int wert[6];
for (int i=0; i<5; i++){// Anweisungen
wert[i] = digitalRead(sensoren[i]);
}
switch(wert[i] == LOW)
{
case V_MITTE :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case V_LINKS :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case V_RECHTS :
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
case H_MITTE :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
break;
case H_LINKS :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
break;
case H_RECHTS :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
break;
default :
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
/*if (digitalRead(V_MITTE) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(V_LINKS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(V_RECHTS) == LOW)
{
digitalWrite(ZURUECK, HIGH);
digitalWrite(VOR, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else if (digitalRead(H_MITTE) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
else if (digitalRead(H_LINKS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(RECHTS, HIGH);
digitalWrite(LINKS, LOW);
}
else if (digitalRead(H_RECHTS) == LOW)
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, LOW);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, LOW);
}
else
{
digitalWrite(VOR, HIGH);
digitalWrite(ZURUECK, HIGH);
digitalWrite(LINKS, HIGH);
digitalWrite(RECHTS, HIGH);
}
//delay(30);
*/
}
das Problem ist das meine sensoren bei einem ereignis ein LOW bringen und ich nicht weis wie das eine Switch schleife erkennen kann.