Okay ich versuche mich so klar wie nur möglich auszudrücken.
Also es sollen die Verbindungen(Testkabel) zwischen den digitalen Pins 22-53 getestet werden. Ich hätte bei d Pin 22 angefangen, dann 23-53 auf ausgelesen und nach jedem zählen soll die Verbindung mit dem aus dem struct kabel_konfiguration verglichen werden. Wenn die gegebene Verbindung existiert ist alles richtig, "PASS". Wenn sie es nicht tut oder wenn sie es tut aber noch andere(Kurzschluss, Fehlverdrahtung) Verbindungen hat ist das ein Fehler, "FAIL". Wenn ein Fehler vorliegt soll auch gleich auf dem Seriellen Monitor angezeigt werden wo der Fehler liegt(Kurzschluss, Fehlverdrahtung).
Y
A
H
sind die Verbindungsarten:
\ /
|
|
/ \
| _ |
| |
P,s. Der Code hat versehentlich ein paar Syntax Fehler. Der hier geht. Musste alle Leerzeichen entfernen um das hier posten zu können.
#include<LiquidCrystal.h>
//AnfangPin/Kabel;
const intI1=23;
const intI2=25;
const intI3=27;
const intI4=29;
const intI5=31;
const intI6=33;
const intI7=35;
const intI8=37;
const intI9=39;
const intI10=41;
const intI11=43;
const intI12=45;
const intI13=47;
const intI14=49;
const intI15=51;
const intIM=53;//M=MASSE,SCHIRM,GEHÄUSE
//EndePin/Kabel:
const intO1=22;
const intO2=24;
const intO3=26;
const intO4=28;
const intO5=30;
const intO6=32;
const intO7=34;
const intO8=36;
const intO9=38;
const intO10=40;
const intO11=42;
const intO12=44;
const intO13=46;
const intO14=48;
const intO15=50;
const intOM=52;//M=MASSE,SCHIRM,GEHÄUSE
typedefstructkabel_konfiguration{
byteLeitungsName;
byteVerbindung_Anfang_1;
char*Verbindung_Anfang_1_Name;
byteVerbindung_Anfang_2;
char*Verbindung_Anfang_2_Name;
byteVerbindung_Ende_1;
char*Verbindung_Ende_1_Name;
byteVerbindung_Ende_2;
char*Verbindung_Ende_2_Name;
};
kabel_konfigurationKABEL[]={
//LeitungsName,VerbindungAnfang1,VerbindungAnfang1Name,VerbindungAnfang2,VerbindungAnfang2Name,VerbindungEnde1,VerbindungEnde1Name,VerbindungEnde2,VerbindungEnde2Name
{1,I1,"I1",0,"0",O1,"O1",0,"0"},
{2,I2,"I2",0,"0",O2,"O2",0,"0"},
{3,I3,"I3",0,"0",O3,"O3",0,"0"},
{4,I4,"I4",0,"0",O4,"O4",0,"0"},
{5,I5,"I5",0,"0",O5,"O5",0,"0"},
{6,I6,"I6",0,"0",O6,"O6",0,"0"},
{7,I7,"I7",0,"0",O7,"O7",0,"0"},
{8,I8,"I8",0,"0",O8,"O8",0,"0"},
{9,I9,"I9",0,"0",O9,"O9",0,"0"},
{10,I10,"I10",0,"0",O10,"O10",0,"0"},
{11,I11,"I11",0,"0",O11,"O11",0,"0"},
{12,I12,"I12",0,"0",O12,"O12",0,"0"},
{13,I13,"I13",0,"0",O13,"O13",0,"0"},
{14,I14,"I14",0,"0",O14,"O14",0,"0"},
{15,I15,"I15",0,"0",O15,"O15",0,"0"},
};
intx=0;//Variablezum"erinnern"derTasterstellungen;
intz=0;//VariablezumResetenvonTasterundAnzeigeleuchte
boolPASS=true;//VariablezumAusgebendesEndergebnissesPASS/FAIL>>true/false
boolover=false;//WirdtruewennTestlaufbeendetist
constintTaster=3;//HighwennTasterbetätigt(Schließer)
constinten=9,rs=8,d4=7,d5=6,d6=5,d7=4;
constintLEDbetriebsbereit=10;//grün
constintLEDfail=11;//rot
constintLEDpass=12;//grün
constintLEDtestlaeuft=13;//gelb
LiquidCrystallcd(rs,en,d4,d5,d6,d7);
voidsetup(){
Serial.begin(9600);//StartetKommunikationüberSerielleSchnittstellezumMonitor
pinMode(LEDbetriebsbereit,OUTPUT);
pinMode(LEDtestlaeuft,OUTPUT);
pinMode(LEDfail,OUTPUT);
pinMode(LEDpass,OUTPUT);
pinMode(Taster,INPUT);
lcd.begin(16,2);
}
void DoOneTest(){//AlleLeitungenwerdennacheinandergetestet
boolfirsttime=true;
boolVerdrahtungOK=true;
bytevar;
//Testabschnitt2-KurzschlüsseundVerdrahtungsfehlererkennen
Serial.println("StartetTestabschnitt2:Verdrahtungsfehler");
for(kabel_konfiguration&ref:KABEL){
pinMode(ref.Verbindung_Anfang_1,INPUT_PULLUP);
pinMode(ref.Verbindung_Anfang_2,INPUT_PULLUP);
pinMode(ref.Verbindung_Ende_1,INPUT_PULLUP);
pinMode(ref.Verbindung_Ende_2,INPUT_PULLUP);
if(ref.Verbindung_Anfang_2==0&&ref.Verbindung_Ende_2==0){
var=1;
}
if(ref.Verbindung_Anfang_2==0&&ref.Verbindung_Ende_2>0){
var=2;
}
if(ref.Verbindung_Anfang_2>0&&ref.Verbindung_Ende_2==0){
var=3;
}
if(ref.Verbindung_Anfang_2>0&&ref.Verbindung_Ende_2>0){
var=4;
}
}
switch(var){
case1:
for(inti=0;i<sizeof(KABEL)/sizeof(KABEL[0]);i++){
Serial.println("");
Serial.print(KABEL[i].Verbindung_Anfang_1_Name);Serial.print("->");Serial.print(KABEL[i].Verbindung_Ende_1_Name);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TestVerdrahtung");
lcd.setCursor(0,1);
lcd.print(KABEL[i].Verbindung_Anfang_1_Name);
pinMode(KABEL[i].Verbindung_Anfang_1,OUTPUT);
digitalWrite(KABEL[i].Verbindung_Anfang_1,LOW);
firsttime=true;
for(intj=0;j<sizeof(KABEL)/sizeof(KABEL[0]);j++){
if(j!=i&&digitalRead(KABEL[j].Verbindung_Anfang_1)==LOW){
errorOtherPin=KABEL[j].Verbindung_Anfang_1_Name;
lcd.setCursor(8,1);
lcd.print("--FAIL--");
if(firsttime==true){
Serial.println("");Serial.print("--FAIL--VerdrahtungsfehlermitLeitung:");
lcd.setCursor(8,1);
lcd.print("--FAIL--");
firsttime=false;
}else{
Serial.print(",");
}
Serial.print(errorOtherPin);
PASS=false;
VerdrahtungOK=false;
}
}
for(intj=0;j<sizeof(KABEL)/sizeof(KABEL[0]);j++){
if(j!=i&&digitalRead(KABEL[j].Verbindung_Anfang_2)==LOW){
errorOtherPin=KABEL[j].Verbindung_Anfang_2_Name;
lcd.setCursor(8,1);
lcd.print("--FAIL--");
if(firsttime==true){
Serial.println("");Serial.print("--FAIL--VerdrahtungsfehlermitLeitung:");
lcd.setCursor(8,1);
lcd.print("--FAIL--");
firsttime=false;
}else{
Serial.print(",");
}
Serial.print(errorOtherPin);
PASS=false;
VerdrahtungOK=false;
}
}
for(intj=0;j<sizeof(KABEL)/sizeof(KABEL[0]);j++){
if(j!=i&&digitalRead(KABEL[j].Verbindung_Ende_1)==LOW){
errorOtherPin=KABEL[j].Verbindung_Ende_1_Name;
lcd.setCursor(8,1);
lcd.print("--FAIL--");
if(firsttime==true){
Serial.print("--FAIL--VerdrahtungsfehlermitLeitung:");
lcd.setCursor(7,1);
lcd.print("--FAIL--");
firsttime=false;
}else{
Serial.print(",");
}
Serial.print(errorOtherPin);
PASS=false;
VerdrahtungOK=false;
}
}
for(intj=0;j<sizeof(KABEL)/sizeof(KABEL[0]);j++){
if(j!=i&&digitalRead(KABEL[j].Verbindung_Ende_2)==LOW){
errorOtherPin=KABEL[j].Verbindung_Ende_2_Name;
lcd.setCursor(8,1);
lcd.print("--FAIL--");
if(firsttime==true){
Serial.println("");Serial.print("--FAIL--VerdrahtungsfehlermitLeitung:");
lcd.setCursor(8,1);
lcd.print("--FAIL--");
firsttime=false;
}else{
Serial.print(",");
}
Serial.print(errorOtherPin);
PASS=false;
VerdrahtungOK=false;
}
}
}
//PasswennkeinKurzschluss&Verdrahtungsfehler
if(VerdrahtungOK==true){
Serial.print("--PASS--");
lcd.setCursor(8,1);
lcd.print("--PASS--");
break;
case2:
break;
case3:
break;
case4:
break;
}
delay(1000);
}
Serial.println("");
Serial.println("");
Serial.println("Testabschnitt2beendet");
Serial.println("");
}
void Anzeigeleuchten(){//SteuerungderAnzeigeleuchten
digitalWrite(LEDbetriebsbereit,HIGH);
if(digitalRead(Taster)==LOW&&x==0){
digitalWrite(LEDtestlaeuft,LOW);
x=1;
}else{
delay(10);
}
if(digitalRead(Taster)==HIGH&&x==1){//Tasterwirdgedrückt
PASS=true;
over=false;
digitalWrite(LEDpass,LOW);
digitalWrite(LEDfail,LOW);
digitalWrite(LEDtestlaeuft,HIGH);
Serial.println();
Serial.println("##########################################################");
Serial.println("#KABELTEST#");
Serial.println("##########################################################");
Serial.println("");
x=2;//Erinnert,dassTastergedrücktwird
}else{
delay(10);
}
if(digitalRead(Taster)==LOW&&x==2){//Tasterwurdegedrückt
digitalWrite(LEDtestlaeuft,HIGH);
x=3;
}else{
delay(10);
}
if(x==3&&z==1){
digitalWrite(LEDtestlaeuft,LOW);
Serial.println("Kabelvollständigüberprüft");
Serial.println("");
z=0;
x=0;
if(PASS){
Serial.println("╔════════════════════════╗");
Serial.println("╠--PASS--KABELTESTBESTANDEN╣");
Serial.println("╚════════════════════════╝");
}else{
Serial.println("╔════════════════════════╗");
Serial.println("╠--FAIL--KABELTESTNICHTBESTANDEN╣");
Serial.println("╚════════════════════════╝");
}
}else{
delay(10);
}
}
void loop(){
Anzeigeleuchten();
if(x==2||x==3){
DoOneTest();//EinenKabeltestmachen
delay(2000);
z=1;
over=true;
}
if(PASS&&over){
digitalWrite(LEDpass,HIGH);//AnzeigeleuchtePASSgehtan
digitalWrite(LEDfail,LOW);//AnzeigeleuchteFAILbleibtaus
lcd.setCursor(0,0);
lcd.print("****************");
lcd.setCursor(0,1);
lcd.print("*****PASS*****");
}elseif(!PASS&&over){
digitalWrite(LEDpass,LOW);//AnzeigeleuchtePASSbleibtaus
digitalWrite(LEDfail,HIGH);//AnzeigeleuchteFAILgehtan
lcd.setCursor(0,0);
lcd.print("****************");
lcd.setCursor(0,1);
lcd.print("*****FAIL*****");
}else{
digitalWrite(LEDpass,LOW);
digitalWrite(LEDfail,LOW);
}
}