In Setup() pinMode dmv array niet te configureren?

Arduino specifieke Software
Berichten: 2
Geregistreerd: 17 Dec 2023, 14:07
Woonplaats: Den Haag

In Setup() pinMode dmv array niet te configureren?

Berichtdoor Vink59 » 18 Dec 2023, 22:23

Hallo allen,

Nieuw op dit forum en gelijk al een vraag. Hoewel ik al een paar projectjes hebt gebouwd loop ik nu toch tegen iets aan wat ik niet kan verklaren. Wellicht dat iemand er een antwoord op weet. Ik ben bezig voor een modelspoorvereniging om een wachtveld te maken met behulp van een Arduino Mega. Het bijzonder is dat deze in een bestaande schakeling moet worden ingepast. De bestaande schakeling is opgebouwd uit relais van oude elektromechanische telefooncentrales inclusief stappenrelais.

Voor het bepalen van de spoorbezetting gebruik ik een array die 6 pinnen bevat. Deze wil ik definiëren in de setup() dmv de for functie en de pinMode INPUT_PULLUP.
En hier gaat er iets niet goed. Ik kwam erachter dat de for functie in de setup() niet werkt. Als ik het opneem in de loop() gaat het wel goed en als ik de pins individueel configureer in de setup() gaat het ook goed.

Ik voeg de code toe. Let wel; deze is nog vol in ontwikkeling.

Groetjes, Hans

Code: Alles selecteren
// Naam : Arduino Wachtveld Triberg
// Auteur : Hans Vink
// Datum : 18-12-2023
// PVKPN Modelspoor Den Haag

char sw_versie[] = "0.1";                 // Software versie Wachtveld Triberg
byte t = 0;                               // Teller sporen
byte Tr[6]               ;                // Bezet sporen 1 t/m 6
byte TrPin[6] = {2,3,4,5,6,7};            // Inputpin Bezet sporen 1 t/m 6
byte TraPin[6] = {14,15,16,17,18,19};     // Led bezet sporen 1 t/m 6
byte Srh[6];                              // Vertrek sporen 1 t/m 6
byte SrhPin[6] = {23,25,27,29,31,33};     // Pin vertrek sporen 1 t/m 6
byte VrPin[6] = {35,37,39,41,43,45};      // Binnenkomst tafel sporen 1 t/m 6
byte w = 0;                               // Teller wissels
byte Ws[6];                               // Wissels 0 t/m 5
byte WsPin[6] = {22,24,26,28,30,32};      // Pin naar relais wissels 0 t/m 5
byte Bs = 0b00000000;                     // Bezetstatus wachtveld
int BR;                                   // Inrijspoor wachtveld
int BRPin = 8;                            // Inputpin contactrail inrijspoor
int BRaPin = 10;                          // Led inrijspoor
int UR;                                   // Uitrijspoor wachtveld
int URpin = 9;                            // Inputpin contactrail uitrijspoor
int URaPin = 11;                          // Led uitrijspoor
int VR;                                   // Vertrek
int AR = 11;                              // Alarm relais
int LR = 12;                              // Wisselstand hoofdbaan
int OR = 20;                              // OR relais
int OS = 21;                              // OS relais
int PR = 36;                              // PR relais
int WR = 38;                              // WR relais
int KR = 40;                              // KR relais
int WsP = 42;                             // Wissel stuurPuls

void setup() {

Serial.begin(115200);
Serial.print("Software versie Wachtveld Triberg ");Serial.println(sw_versie);
Serial.println("PVKPN Modelspoor Den Haag");

for (byte t=0;t<6;t++);
    {
    pinMode(TrPin[t],INPUT_PULLUP);
    }
for (byte t=0;t<6;t++);
    {   
    pinMode(TraPin[t],OUTPUT);
    }
for (byte t=0;t<6;t++);
    {
    pinMode(SrhPin[t],OUTPUT);
    }
for (byte t=0;t<6;t++);
    {
    pinMode(VrPin[t],OUTPUT);
}
for (w=0; w<6; w++);
    {
    pinMode(WsPin[w], OUTPUT);
    }
pinMode(BRPin,  INPUT_PULLUP);
pinMode(BRaPin, OUTPUT);
pinMode(URpin,  INPUT_PULLUP);
pinMode(URaPin, OUTPUT);
pinMode(WsP,  OUTPUT);
pinMode(AR, OUTPUT);
pinMode(LR, OUTPUT);
pinMode(OR, OUTPUT);
pinMode(OS, OUTPUT);
pinMode(PR, OUTPUT);
pinMode(WR, OUTPUT);
pinMode(KR, OUTPUT);

}

void loop() {

//Bezetting sporen wachtveld

for (t=0; t<6; t++){
  pinMode(TrPin[t],INPUT_PULLUP);
  pinMode(TraPin[t],OUTPUT);
  Tr[t] = digitalRead(TrPin[t]);
          Serial.print(Tr[t]); Serial.print(" ");Serial.print(t);
  if (Tr[t] == HIGH){
        digitalWrite(TraPin[t], HIGH);
        bitWrite(Bs, t, 0);
        Serial.print(" Spoor "); Serial.print(t+1); Serial.println(" vrij.");
        }
   else {
    digitalWrite(TraPin[t], LOW);
            bitWrite(Bs, t, 1);
    Serial.print(" Spoor "); Serial.print(t+1); Serial.println(" bezet.");
   }
}
Serial.print("Status wachtveld: "); Serial.print(Bs, BIN); Serial.print(" "); Serial.println(Bs);
if (Bs == 63)
    {Serial.println("Alle sporen wachtveld bezet!");
    }
else {Serial.println("Minimaal 1 spoor beschikbaar");
    }
//Inrijspoor wachtveld   
BR = digitalRead(BRPin);
digitalWrite(BRaPin, BR !=BR);
if (BR == LOW)
    {Serial.println("Inrijspoor bezet.");
    }
    else {Serial.println("Inrijspoor vrij.");
    }

//Uitrijspoor wachtveld
UR = digitalRead(URpin);
digitalWrite(URaPin, UR !=UR);
if (UR == LOW)
    {Serial.print("Uitrijspoor bezet.");
    }
    else {Serial.print("Uitrijspoor vrij.");
    }
Serial.println();   
delay(1000);

}

Advertisement

Berichten: 62
Geregistreerd: 05 Feb 2023, 13:30

Re: In Setup() pinMode dmv array niet te configureren?

Berichtdoor sterretjeToo » 28 Jan 2024, 14:50

Als je nog hulp nodig hebt is de vraag hoe je weet dat het niet goed gaat?

Welke Arduino gebruik je?

Berichten: 80
Geregistreerd: 02 Nov 2022, 13:03

Re: In Setup() pinMode dmv array niet te configureren?

Berichtdoor ThHe » 29 Jan 2024, 00:41

for (byte t=0;t<6;t++);
{
pinMode(VrPin[t],OUTPUT);
}


Het verwijderen van de ; achter de for loop doet wonderen.

Code: Alles selecteren
for (byte t=0;t<6;t++)
    {
    pinMode(VrPin[t],OUTPUT);
}

Berichten: 2
Geregistreerd: 17 Dec 2023, 14:07
Woonplaats: Den Haag

Re: In Setup() pinMode dmv array niet te configureren?

Berichtdoor Vink59 » 11 Feb 2024, 15:01

Beste sterretjeToo en ThHe,

Bedankt voor jullie reactie. En excuses voor deze zeer late reactie van mijn kant. Dit komt met name door de zeer late toelating van mijn vraag door de beheerder. Kreeg de indruk dat het forum meer dood dan levend was. Het project is inmiddels in de ijskast gezet.
Ik gebruik een Arduino Mega en het probleem was dat de pinnen die als input moesten dienen als output bleven staan.
ThHe, stom natuurlijk. Meerdere keren de code gecontroleerd maar iedere keer hier toch weer

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: ibamodewud en 103 gasten