Doel:€250.00
Donaties:€172.50

Per saldo:€-77.50

Steun ons nu!

Laatst bijgewerkt
op 12-01-2021
Algemeen

De stichting

Recente berichten

Mehano Blue Tiger DCC, loopt slecht. Decoder defect? door ceuleer
Vandaag om 06:02:42
Programmering Dr4018 door Technodirk
Vandaag om 05:54:03
DR5000 gekocht, ICE-2 wil niet rijden. Lampen werken wel? door Pmfrl
Vandaag om 05:16:17
DR5000 met WLAN-maus. door Marcel112
Vandaag om 02:03:52
Roco NS 2400, model 2020, materieelbespreking door Duoblock
Vandaag om 01:58:51
Cranicher Altbahn door Joost O
Vandaag om 01:13:56
Waar is kurkplaat te koop ? door Butselboy
Vandaag om 00:29:57
Raadplaatje door dennie
Vandaag om 00:22:07
LTM-51 Garratt in messing, Spoor-0 door FritsT
Vandaag om 00:06:34
Intellibox 1 met Digikeijs 5033 door hein frunt
Vandaag om 00:00:48
Heen, En en Weer: de tram. door Huup
20 januari 2021, 23:54:52
Frans loodsje et cetera door Noordernet
20 januari 2021, 23:50:33
Draadloos Mobile Station? door KNed
20 januari 2021, 23:46:05
Mat '36, 445. Zelfbouw. door Rob Bennis
20 januari 2021, 23:34:22
Van Swarzach naar Swarzburg door MOVisser
20 januari 2021, 23:28:02
Deutsche Gründlichkeit ;-) door Duoblock
20 januari 2021, 23:22:54
Heris 2021, nieuws van de fabrikant door Chris
20 januari 2021, 23:21:15
Roco NS 200/300 Sik, model 2019 door Duoblock
20 januari 2021, 23:07:38
Stoomtrein Goes Borsele: Wat zijn we aan het bouwen door Reinier Z.
20 januari 2021, 23:02:35
Ontstaan van module/ diorama baan De Lagerweij door jaco1988
20 januari 2021, 22:54:00
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door St00mboy
20 januari 2021, 22:51:12
Albert's fantasie in schaal 0e door Noordernet
20 januari 2021, 22:50:27
Projekt 083-338 door Noordernet
20 januari 2021, 22:44:25
Verlichtingsprinten voor H0 NS lokomotieven door Rob Ellerman
20 januari 2021, 22:31:00
Werkend diorama: een steenfabriek in 0e door Tjalling
20 januari 2021, 22:14:37
Toon hier je nieuwe (model-) spooraanwinst(en)... door Dave.......
20 januari 2021, 21:37:58
Update: baan in de tropen door Arjen52
20 januari 2021, 21:37:47
Lofzang op een Fleischmann BR 01 door Reinout van Rees
20 januari 2021, 21:34:18
Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
20 januari 2021, 21:15:27
MSG Drechtsteden: Wie zijn wij en wat doen wij. door Remystoom
20 januari 2021, 21:12:22
  

Auteur Topic: El carrilet  (gelezen 16653 keer)

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1798
    • El Carrilet
Re: El carrilet
« Reactie #30 Gepost op: 20 november 2020, 11:00:37 »
Dit is mijn meest recente bouwsel; een traverse, gemaakt met met het loopwerk van een oude matrixprinter met stappenmotor. Op de plaats van de printkop zit de bak van de traverse. Besturing met een Arduino. Met een draaiknop wordt het spoor gekozen en na indrukken van een knopje schuift de bak naar het gekozen spoor.
De sporen zijn nog niet aangesloten op een regelaar, dat wordt de volgende stap.


<a href="https://www.youtube.com/v/BaNMoxOLXKg" target="_blank" class="new_win">https://www.youtube.com/v/BaNMoxOLXKg</a>

Als het filmpje niet start, dit is de link.

NS1220

  • Offline Offline
  • Berichten: 2680
Re: El carrilet
« Reactie #31 Gepost op: 20 november 2020, 12:33:23 »
Prachtig  (y)
Ik hou van bewegende dingen op de baan.
Welk land en welke periode heb je als thema?
de groeten van Jacob
Modelbouwer in H0 en H0e. Tijdperk ongeveer '65~'75.
Vervoer van goederen met gewone wagons en 20' containers op platte wagens.
En iets in LGBschaal:
https://forum.beneluxspoor.net/index.php?topic=88776.0

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1798
    • El Carrilet
Re: El carrilet
« Reactie #32 Gepost op: 20 november 2020, 13:05:06 »
Hoofdzakelijk NL materieel, maar ik heb ook een Duitse stoomlok, en een USA Burlington Northern loc en een Canadese CN, gewoon omdat ik die mooi vond en er tijdens een vakantie toevallig tegenaan liep.

Wat tijdperken betreft doe ik niet moeilijk, ik rij met wat ik mooi vind. Het gaat mij meer om de besturing en de elektronica. Ik lig er ook niet wakker van dat er gelijke wagennummers in dezelfde trein zitten...  ;)
« Laatst bewerkt op: 20 november 2020, 14:18:27 door 72sonett »

NS1220

  • Offline Offline
  • Berichten: 2680
Re: El carrilet
« Reactie #33 Gepost op: 20 november 2020, 13:46:03 »
Wagennummers; je hebt van die fundamentalisten die eisen dat die allemaal verschillen  :D
Ik heb ook D en NL en net als jij een paar USA locs die ik mooi vind: Die EMD DDA40X moest ik natuurlijk wel hebben  :)
de groeten van Jacob
Modelbouwer in H0 en H0e. Tijdperk ongeveer '65~'75.
Vervoer van goederen met gewone wagons en 20' containers op platte wagens.
En iets in LGBschaal:
https://forum.beneluxspoor.net/index.php?topic=88776.0

Frycio82

  • Offline Offline
  • Berichten: 379
  • Ooit zullen de treinen rijden....maar eerst bouwen
Re: El carrilet
« Reactie #34 Gepost op: 22 november 2020, 21:39:00 »
Hallo,

Geweldig die traverse :):):)  (y) (y) (y) (y) (y)
Goed idee met die stappenmotor van een matrix printer.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1798
    • El Carrilet
Re: El carrilet
« Reactie #35 Gepost op: 23 november 2020, 12:55:36 »
Goed idee met die stappenmotor van een matrix printer.

Mocht het je interesseren, dit is het principeschema:



« Laatst bewerkt op: 24 november 2020, 08:38:39 door 72sonett »

Frycio82

  • Offline Offline
  • Berichten: 379
  • Ooit zullen de treinen rijden....maar eerst bouwen
Re: El carrilet
« Reactie #36 Gepost op: 24 november 2020, 07:07:41 »
Hallo,

Bedankt voor het schema. Kan dit ook worden uitgevoerd met een Arduino Uno ? Daar heb ik er nog een paar van liggen :)

bask185

  • Offline Offline
  • Berichten: 1022
Re: El carrilet
« Reactie #37 Gepost op: 24 november 2020, 08:07:48 »
Misschien, in dit schema zijn A6 en A7 gebruikt en een UNO heeft die niet. Echter A2 is nog vrij om te gebruiken en je kan ook nog pin 0 en 1 gebruiken, maar let op dat je die weer makkelijk los kan maken omdat iets aansluiten op die pinnen het upload process zou kunnen verstoren. Ik weet verder niets af van die BCD<->7 segment omzetter.

@Sonnet, ik weet niet wat je precies doet met A6 en A7, ik had ooit gelezen dat je die alleen als analoge input kon gebruiken ???

Bas

gvandersel

  • HCC!m maar toch Selectrix (RMX)
  • Offline Offline
  • Berichten: 3574
  • Als het maar elektrisch is.
    • Homepage Gerard van der Sel
Re: El carrilet
« Reactie #38 Gepost op: 24 november 2020, 09:10:56 »
A6 en A7 zijn eigenlijk poort C pin 6 en pin 7 en zijn mits uitgevoerd gewoon als dogitale input/output te gebruiken, net als A0 tot A5.

Groet,

Gerard van der Sel.
Holzburg (IIIb/IVa) schaal N.
Kijk ook eens bij de bouw en lees de avonturen.

bask185

  • Offline Offline
  • Berichten: 1022
Re: El carrilet
« Reactie #39 Gepost op: 24 november 2020, 09:17:37 »
Hm ik heb het gegoogled en A6 en A7 kun je niet als digitale pinnen inzetten. Ze zijn alleen aangesloten op een interne multiplexer op de ADC.
https://forum.arduino.cc/index.php?topic=568116.0

Bas


Erik Baas

  • Offline Offline
  • Berichten: 352
Re: El carrilet
« Reactie #40 Gepost op: 24 november 2020, 09:51:55 »
Kan dit ook worden uitgevoerd met een Arduino Uno ?

Ja. Als het om pins A3 t/m A7 gaat: de Uno heeft genoeg vrije digitale I/O-pins, nl. 2 t/m 13 (*) en A0 t/m A5. Alleen is van die laatste reeks A1 in 72sonett's schema al in gebruik als analoge input, en die heb je op de Uno natuurlijk ook weer nodig.

*: Ook nog 0 en 1, maar die kun je beter vrij houden, zijn nl. voor de seriepoort, en die heb je nodig om een sketch te kunnen uploaden.
« Laatst bewerkt op: 24 november 2020, 10:05:51 door Erik Baas »

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1798
    • El Carrilet
Re: El carrilet
« Reactie #41 Gepost op: 24 november 2020, 11:33:08 »
Dat van A6 en A7 wist ik van de Arduino reference, maar ik gebruik ze als digitale uitvoer en blijkbaar gaat dat goed.  Eventueel kun je de LT op A5 weglaten en dan A2 en A5 gebruiken ipv A6 en A7.

De draaischakelaar geeft met een weerstandsladder een analoge waarde aan de Nano, die waarde wordt verschaald naar een getal 0..5 voor het spoornummer. Dit nummer wilde ik zichtbaar maken op een grote 7-segmentdisplay opgebouwd uit rechthoekige leds, maar omdat er op de Nano geen 7 I/O lijnen meer vrij waren heb ik dat met een BCD naar 7segment decoder gedaan door het spoornummer per bit naar de (4) A, B, C en D ingangen van de decoder te schrijven. Toen was er nog weer een I/O voor de lamptest (LT) beschikbaar dus die heb ik ook maar gebruikt, hoewel je voor die LT ook een 8 naar de display kan sturen. Je kunt dat hele 7segmentdeel ook weglaten, ik heb het ook nog niet aangesloten.


Het aantal stappen tussen de sporen heb ik experimenteel vastgesteld en de waarde als constante in het programma gezet, zo ook het stukje tussen de parkeerstand helemaal links en spoor 0.

Bij inschakelen is de stand van de stappenmotor en de traverse niet bekend, er moet dus eerst een nulstand worden bepaald. Dat gebeurt door de traverse langzaam naar links te schuiven totdat een schakelaartje wordt ingedrukt (het klikken van het schakelaartje is te horen in het filmpje). Vanuit die 'parkeerstand' schuift de traverse dan naar spoor 0.

In het filmpje is te zien dat de traverse soms blijft haken achter een aansluitend spoor en de motor een paar stappen overslaat, dan is de nulstand ook weg en dan lijnen de sporen niet meer op met de traverse. Daarom wordt iedere keer als spoor 0 gekozen wordt de parkeerstand weer even opgezocht en dan klopt het weer.

In het filmpje is ook te zien dat na inschakelen de LCD niet altijd goed de tekst weergeeft, maar als ik dan de resetknop op de Nano indruk is het weer ok.

De traverse is overigens een Märklin brugdeel.

Voor de liefhebbers, dit is het programma;
// ULN2803/4 controller board, Matsushita 42SIM-24D8YB/24D8A stepper motor
// I/O pin1 = 4 rood  ---> pin 4 stepper motor
// I/O pin2 = 5 bruin ---> pin 2     ,,
// I/O pin3 = 6 geel  ---> pin 1     ,,
// I/O pin4 = 7 blauw ---> pin 3     ,,
//              wit   ---> pin 5   (VCC)
// volgorde; 6 -> 6+5 -> 5 -> 5+7 -> 7 -> 7+4 -> 4 -> 4+6
//
//--------------------- [global variables ]------------------------------------------------------
const byte maxspoor    = 6;  // aantal sporen
const byte parkpause   = 2;  // minimum pause in msec = max. snelheid
const byte schuifpause = 1;  // max. pause in msec = min. snelheid
const word stappenperspoor = 130; // aantal stappen tussen 6 sporen 0..5
const word stappennaarnul  =  30; // aantal stappen van parkeerpositie naar spoor 0
char messVersie[]="Traverse 1.0      "; // 18 posities

byte doelspoor;              // 6 sporen, om doelspoor 0..5 aan te geven
byte actspoor;               // om actuele spoor aan te geven

byte rotorpos[9];            // fases 00000000 .. 00001010
byte index;                  // begin fasepositie na parkeren
int stappen;                 // totaal te nemen stappen vooruit (+) of achteruit (-)
bool parkstand;              // om aan te geven of in parkeerstand of niet
//
//                  bit  D76543210
const byte LCDcls      = B00000001; // clear LCD
const byte autoinc     = B00000110; // Set Auto-Increment on
//                       B00001100; // Display on/off control: Display on, cursor off, blink off
const byte cursoron    = B00001110; // Turn On Cursor
const byte twoline4b5x8= B00101000; // Function Set: 4 bits, 2-Line Mode, 5x8 font
// Function set          B001LNF--  Sets interface data length (L), number of display lines (N), and character font (F). 37 ms
//                           1      : 8 bits,
//                           0      : 4 bits
//                            1     : 2 lines,
//                            0     : 1 line
//                             1    : 5 x 10 dots,
//                             0    : 5 x 8 dots
//                       B00110100; // Function Set: 8-bit, 1 line, font 5x10
const byte cursorleft  = B00010000; // move cursor 1 pos to left
const byte cursorright = B00010100; // move cursor 1 pos to right
//                       B0001 S/C R/L — — // Cursor or display shift without changing DDRAM contents. 37 ms
//                              1     = Display shift
//                              0     = Cursor move
//                                  1   = to the right
//                                  0   = to the left



// -----[ I/O pin definitions ]-------------------------------------------------
const byte draaiswpin  = A1;  // invoer voor doelspoor 0..6
const byte parkswpin   = 5;   // invoer parkeerschakelaar
       
const byte stepB4pin   = 10;  // naar stappenmotor via ULN2003 pin B1..B4
const byte stepB3pin   = 11;
const byte stepB2pin   = 12;
const byte stepB1pin   = 13;
//
const byte BCDpinA     = A3;  // BCD naar 7 seg display
const byte BCDpinB     = A7;
const byte BCDpinC     = A6;
const byte BCDpinD     = A4;
const byte lamptestpin = A5;

const byte ledroodpin  = 6;   // naar rode led op lcdboard
const byte ledgroenpin = 4;   // naar groene led op lcdboard
const byte LCDd4pin    = A0;  // naar LCD datapin D4
const byte LCDd5pin    = 9;   // naar LCD datapin D5
const byte LCDd6pin    = 2;   // naar LCD datapin D6
const byte LCDd7pin    = 8;   // naar LCD datapin D7
const byte ENpin       = 7;   // naar LCD pin 10 ENable read/write
const byte RSpin       = 3;   // naar LCD pin 9 Register SELECT; 0 = Instructie, 1 = data/text
 
//======================[ LCD subroutines ] ======================================================
void ClearLCD() {
  SendInst (LCDcls); // Clear display
}
// ----------------------------------
void SendInst(byte inst){
  digitalWrite(RSpin,LOW);   // Set instruction mode
  SendChar (inst);
  digitalWrite(RSpin,HIGH);  // Back to text mode;
}      // SendInst           
// ----------------------------------
void SendChar (byte kar){

  digitalWrite(LCDd4pin,bitRead(kar,4));  // kar.HIGHNIB   // Send High Nibble
  digitalWrite(LCDd5pin,bitRead(kar,5));
  digitalWrite(LCDd6pin,bitRead(kar,6));
  digitalWrite(LCDd7pin,bitRead(kar,7));
  digitalWrite(ENpin,1);                  // puls op ENable, LCD neemt data over
  delayMicroseconds(5);
  digitalWrite(ENpin,0);
  //
  digitalWrite(LCDd4pin,bitRead(kar,0));   // kar.LOWNIB    // Send Low Nibble
  digitalWrite(LCDd5pin,bitRead(kar,1));
  digitalWrite(LCDd6pin,bitRead(kar,2));
  digitalWrite(LCDd7pin,bitRead(kar,3));
  digitalWrite(ENpin,1);                   // puls op ENable, LCD neemt data over
  delayMicroseconds(5);
  digitalWrite(ENpin,0);
  //delay(10);
} // SendChar
//----------------------------------------------------------------------------------
void stepperstap(byte index) {  // draai steppermotor 1 stap
  digitalWrite(stepB1pin,bitRead(rotorpos[index],0));
  digitalWrite(stepB2pin,bitRead(rotorpos[index],1));
  digitalWrite(stepB3pin,bitRead(rotorpos[index],2));
  digitalWrite(stepB4pin,bitRead(rotorpos[index],3));
} // stepperstap
//----------------------------------------------------------------------------------
void motorstop () {                // maak steppermotor stroomloos, leds aan/uit
  stepperstap(0);
  digitalWrite (ledroodpin,LOW);   // rode led uit
  digitalWrite (ledgroenpin,HIGH); // groene aan
} // motorstop
//----------------------------------------------------------------------------------
void parkeer() {                   // draai langzaam terug naar positie 0 totdat schakelaar wordt ingedrukt
  char messPark1[15] = "Parkeren...   ";
  char messPark2[15] = "Geparkeerd.   ";

  digitalWrite (ledroodpin,HIGH);     // rode led aan, groene uit
  digitalWrite (ledgroenpin,LOW);
  ClearLCD;
  delay(50);
  for (int t = 0; t<= 11; t++) { SendChar (messPark1[t]); } // laat "Parkeren... " boodschap zien

  index = 9;                          // begin ergens
  parkstand = digitalRead(parkswpin); // kijk naar eindschakelaar op traverse (= ook op LCD module)
  while (parkstand == false) {        // zolang schakelaar niet ingedrukt
      index = index - 1;              // draai linksom
      if (index < 1) {index = 8; };   //
      stepperstap(index);
      delay (parkpause);
      parkstand = digitalRead(parkswpin);  // kijk naar eindschakelaar op traverse
  }   // schakelaar ingedrukt in eindstand

  // schuif naar spoor 0
  for (int t = 0; t == stappennaarnul; t++) {      // 512 = 1 REV rotor shaft = 1/64 REV output shaft, half step
    index = index + 1;           // positief, rechtsom
    if (index > 8) {index = 1; } // opnieuw beginnen als te groot
    stepperstap(index);          // uitvoer naar stappenmotor via ULN2003
    delay (schuifpause*2);       // langere pauze = langzamer schuiven
  }
 
  motorstop;                     // motor stroomloos, leds aan/uit
  ClearLCD;             
  for (int t = 0; t<= 13; t++) { SendChar (messPark2[t]); } // laat "Geparkeerd." boodschap zien

  actspoor  = 0;                 // actuele stand van schuifbrug
  doelspoor = 0;
  delay (1000);                  // wacht om tekst te laten zien
}
//===================================================================================================
int haalstappen (int steps){         //draaischakelaar geeft spoor aan, spoor 0 = parkeerstand
  char messWacht[8]= "Wacht: ";
  char messNaar[8] = " ---> ?";
  char messSpoor[8]= "Spoor  ";
  byte tmpspoor;
 
  tmpspoor = actspoor;
  do {                             // wachten tot schakelaar is ingedrukt, dan parkswpin == high
    doelspoor = map(analogRead(draaiswpin),0,1023,0,5); // kijk naar draaischakelaar
    if (tmpspoor != doelspoor) {   // laat stand draaischakelaar zien op LCD en 7 seg als veranderd is
      tmpspoor = doelspoor;
      SendInst(cursorleft);         // zet cursor 1 pos naar links
      SendChar(48 + doelspoor);     // laat nieuwe 'naar' spoornr zien op LCD
      //
      digitalWrite(BCDpinA,!bitRead(doelspoor,0));   // laat doelspoor zien op 7 seg display, 'laag' ís aan
      digitalWrite(BCDpinB,!bitRead(doelspoor,1));
      digitalWrite(BCDpinC,!bitRead(doelspoor,2));
      digitalWrite(BCDpinD,!bitRead(doelspoor,3));
    }
  }
  while (digitalRead(parkswpin) == LOW); // niets doen zolang schakelaar op LCD module niet is ingedrukt
  //
  if (doelspoor > maxspoor) { doelspoor = maxspoor; }
  //DEBUG CRSRXY, 1,2, BIN dipsw, " doelspoor = ", DEC doelspoor, "     "
  steps = (doelspoor-actspoor) * stappenperspoor;     // kan negatief zijn
  //DEBUG CRSRXY, 1,3, "haalstappen; spoor ", DEC actspoor, " --> ", DEC doelspoor, " stappen = ", SDEC steps,"      ", CR

  ClearLCD;
  for (int t = 0; t<=5; t++) { SendChar(messSpoor[t]); }   //lookup t, ["Spoor "], char
  SendChar (48 + actspoor);  // laat 'van' spoornr zien op LCD
  for (int t = 0; t<=5; t++) { SendChar(messNaar[t]);  }   //lookup t, [" ---> "], char
  SendChar (48 + doelspoor);  // laat 'naar' spoornr zien op LCD

  return steps; // haalstappen
}
// =======================================================================================0
void setup() {
  pinMode(draaiswpin,INPUT); // invoer draaischakelaar
  pinMode(parkswpin,INPUT);  // invoer parkeerschakelaar = ook schakelaar op LCD module
   
  pinMode(stepB1pin,OUTPUT); // uitvoer naar stappenmotor via ULN2003
  pinMode(stepB2pin,OUTPUT);
  pinMode(stepB3pin,OUTPUT);
  pinMode(stepB4pin,OUTPUT);

  pinMode(BCDpinA,OUTPUT);   // BCD naar 7 seg display
  pinMode(BCDpinB,OUTPUT);
  pinMode(BCDpinC,OUTPUT);
  pinMode(BCDpinD,OUTPUT);
  pinMode(lamptestpin,OUTPUT);

  pinMode(RSpin,OUTPUT);     // = LCD PIN 9 Register Select; 0 = Instructie, 1 = data/text
  pinMode(ENpin,OUTPUT);     // = ENable read/write
  pinMode(LCDd4pin,OUTPUT);  // LCD datapin d4
  pinMode(LCDd5pin,OUTPUT);  // LCD datapin d5
  pinMode(LCDd6pin,OUTPUT);  // LCD datapin d6
  pinMode(LCDd7pin,OUTPUT);  // LCD datapin d7
 
  pinMode(ledroodpin,OUTPUT); // leds op lcdboard
  pinMode(ledgroenpin,OUTPUT);

  rotorpos[0] = B0000000;   // 0
  rotorpos[1] = B0000010;   // 6
  rotorpos[2] = B0000110;   // 6+5
  rotorpos[3] = B0000100;   // 5
  rotorpos[4] = B0000101;   // 5+7
  rotorpos[5] = B0000001;   // 7
  rotorpos[6] = B0001001;   // 7+4
  rotorpos[7] = B0001000;   // 4
  rotorpos[8] = B0001010;   // 4+6

  // ------------------ Initialize LCD -------------------------------
  //LOW  RW               ' write mode
  //LOW  RS               ' instruction mode
  //LOW  LCDDB4           ' Set To 4-bit Operation
  //HIGH LCDDB5
  //LOW  LCDDB6
  //LOW  LCDDB7
  //PULSOUT EN,3   
  SendInst (twoline4b5x8); // %00101000 = 2-Line Mode, 4 bits, 5x8 font
  SendInst (cursoron);     // %00001110 = Turn On Cursor
  SendInst (autoinc);      // %00000110 = Set Auto-Increment on
  ClearLCD;
  //
  for (int t=0; t<=18; t++) {SendChar (messVersie[t]); }
  delay (3000);            // laat versie zien
  lamptest;                // 7 segment lamptest
  parkeer;                 // draai naar positie 0 totdat schakelaar wordt ingedrukt, dan naar spoor 0
}
// --------------------------------------------------------------------
void lamptest(){           // lamptest; 7 segment alle leds aan
   char messLamptest[15] = "lamptest...    ";
   for (int t=0; t<=15; t++) {SendChar (messLamptest[t]); }
   //
   /*
   t = 8;
   digitalWrite(BCDpinA,bitRead(t,0));   // laat '8' zien op 7 seg display
   digitalWrite(BCDpinB,bitRead(t,1));
   digitalWrite(BCDpinC,bitRead(t,2));
   digitalWrite(BCDpinD,bitRead(t,3));
   */
   digitalWrite(lamptestpin,0);   // maak lamptestpin laag, '8' gaat aan
   delay (1000);                  // 1 seconde 7 segment lamptest
   digitalWrite(lamptestpin,1);   // maak lamptestpin hoog
}
// --------------------------[ main ]-----------------------------------
//
void loop() {         
  haalstappen (stappen);       // aantal stappen aan de hand van spoornummer via draaischakelaar
  // motor gaat draaien
  digitalWrite (ledroodpin, HIGH);     // rode leds aan
  digitalWrite (ledgroenpin,LOW);      // groene led uit
  //
  for (int stap = 0; stap == abs(stappen); stap++) {  // STEP (HFstep+1) // 512 = 1 REV rotor shaft = 1/64 REV output shaft, half step
    if (stappen > 0) { 
      index = index + 1; }       // positief, rechtsom
    else {
      index = index - 1; }       // negatief, linksom
    if (index > 8) {index = 1; } // opnieuw beginnen van onder als te groot
    if (index < 1) {index = 8; } // opnieuw beginnen van boven als te klein
    stepperstap(index);          // uitvoer naar stappenmotor via ULN2003
    if ((stap < (stappenperspoor/4) ) || (stap > (abs(stappen)-stappenperspoor/4) ))
    {
      delay (schuifpause*2);     // langzaam schuiven als dichtbij doelspoor
    }
    else {
      delay (schuifpause);       // snel schuiven
    }
  }
 
  actspoor = doelspoor;          // schuifbrug is verplaatst naar doelspoor
 
  if (doelspoor == 0) { parkeer(); } // opnieuw nulstand vaststellen
 
  motorstop;                     // steppermotor stroomloos, rode led uit, groen aan
 
}
// ======================================= [ einde prog ]==============================================================

« Laatst bewerkt op: 27 november 2020, 10:21:23 door 72sonett »