Hallo!
Ich möchte mal euch Gurus befragen, ob ich die ganze Woche mit einem Brett vorm Kopf programmiert habe. Lange ist es her, dass ich was programmiert habe und von können kann ich auch nicht reden. Naja.
Im Grunde soll dieser Code 4 Eingänge nach HIGH oder LOW checken und dann entsprechend nach Ergebnis Grüne LEDs bzw rote LEDs bei Misserfolg aufleuchten lassen. Hört sich nicht schwer an aber will nicht so wirklich. Der Hardware-Aufbau ist auch entsprechend simpel:
5 Taster mit Pulldown-Widerständen
8 LEDs (4x rot 4x grün, wird noch erwietert)
Arduino Nano (Klon)
//Debuggen mit Textschnippsel nicht vergessen ;)
int DUT_detect = 2;
int DUT_short = 3;
int DUT_lm317 = 4;
int DUT_diode = 5;
int DUT_mosfet = 6;
int OK_detect = 8;
int OK_short = 9;
int OK_lm317 = 10;
int OK_diode = 11;
int OK_mosfet = 12;
int NG_detect = A0;
int NG_short = A1;
int NG_lm317 = A2;
int NG_diode = A3;
int NG_mosfet = A4;
void setup() {
Serial.begin(9600);
Serial.println("Setup gestartet");
/*
pinMode(*hier Pin einfügen*, OUTPUT); //beliebig oft wiederholen
pinMode(*hier Pin einfügen*, INPUT); //beliebig oft wiederholen
*/
pinMode(DUT_detect, INPUT);
pinMode(DUT_short, INPUT);
pinMode(DUT_lm317, INPUT);
pinMode(DUT_diode, INPUT);
pinMode(DUT_mosfet, INPUT);
//OUTPUT definieren fuer GUT
pinMode(OK_detect, OUTPUT);
pinMode(OK_short, OUTPUT);
pinMode(OK_lm317, OUTPUT);
pinMode(OK_diode, OUTPUT);
pinMode(OK_mosfet, OUTPUT);
//OUTPUT definieren fuer FEHLER
pinMode(NG_detect, OUTPUT);
pinMode(NG_short, OUTPUT);
pinMode(NG_lm317, OUTPUT);
pinMode(NG_diode, OUTPUT);
pinMode(NG_mosfet, OUTPUT);
}
void loop() {
//Spannung für Testschaltung wird ausgegeben
digitalWrite(7, HIGH);
Serial.println("Spannung für Testschaltung wird ausgegeben");
//Ist die Baugruppe anwesend? Wenn ja, Alle anderen Testspannungen freigeben
//Baugruppe eingelegt?
while (digitalRead(DUT_detect), HIGH) {
Serial.println("In der While-Schleife");
//Spannungsregler gut
if (digitalRead(DUT_lm317), HIGH) {
Serial.println("Spannungsregler OK");
//Fehler-LED ausschalten
digitalWrite(NG_lm317, LOW);
//OK-LED einschalten
digitalWrite(OK_lm317, HIGH);
}
//Spannungsregler nicht gut:
if (digitalRead(DUT_lm317), LOW) {
Serial.println("Spannungsregler NG");
//OK-LED ausschalten
digitalWrite(OK_lm317, LOW);
//NG-LED einschalten
digitalWrite(NG_lm317, HIGH);
}
delay(500);
//Dioden gut
if (digitalRead(DUT_diode), HIGH) {
Serial.println("Dioden OK");
//Fehler-LED ausschalten
digitalWrite(NG_diode, LOW);
//OK-LED einschalten
digitalWrite(OK_diode, HIGH);
}
//Dioden nicht gut:
if (digitalRead(DUT_diode), LOW) {
Serial.println("Dioden NG");
//OK-LED ausschalten
digitalWrite(OK_diode, LOW);
//NG-LED einschalten
digitalWrite(OK_diode, HIGH);
}
delay(500);
//MOSFET gut
if (digitalRead(DUT_mosfet), HIGH) {
Serial.println("MOSFET OK");
//Fehler-LED ausschalten
digitalWrite(NG_mosfet, LOW);
//OK-LED einschalten
digitalWrite(OK_mosfet, HIGH);
}
//MOSFET nicht gut:
if (digitalRead(DUT_mosfet), LOW) {
Serial.println("MOSFET NG");
//GUT-LED ausschalten
digitalWrite(OK_mosfet, LOW);
//NG-LED einschalten
digitalWrite(NG_mosfet, HIGH);
}
delay(500);
}
Serial.println("Nach der While-Schleife");
delay(500);
}
Die unterschiedlichen Varianten zum Abfragen von den Pins ist auch Absicht, nach 3 mal neu anfangen war ich einfach zu verzweifelt, um mich da festzulegen. Auch einheitlich hat der Code nicht das gemacht, was ich will.
Die delays habe ich mal zu debug-Zwecken drin gelassen, so lässt es sich am seriellen Monitor einfacher ablesen
PS: Es hat sich ja ganz schön was im Forum verändert. WOW!