//i2c Master Code(UNO)#include <Wire.h>void setup(){ Wire.begin(); delay(2000);}void loop(){ Wire.beginTransmission(5); Wire.write('H'); digitalWrite(8,HIGH); Wire.endTransmission(); delay(3000); Wire.beginTransmission(5); Wire.write('L'); digitalWrite(8,LOW); Wire.endTransmission(); delay(3000); }
//i2c Slave Code(UNO 2)#include <Wire.h>void setup(){ Wire.begin(5); Wire.onReceive(receiveEvent); pinMode(8,OUTPUT); digitalWrite(8,LOW);}void loop(){}void receiveEvent(int howMany){ while(Wire.available()) { char c = Wire.read(); if(c == 'H') { digitalWrite(8,HIGH); } else if(c == 'L') { digitalWrite(8,LOW); } }}
/* Seinsturing test programma.*/int sein1 = 9;int sein2 = 10;void setup(){ pinMode(sein1,OUTPUT); pinMode(sein2,OUTPUT); Serial.begin(9600); Serial.println("Arduino analoge modelbaan sturing : Sein beelden");} void loop(){ digitalWrite(sein1, LOW); digitalWrite(sein2, HIGH); Serial.println("Blok2 vrij -> Blok1 bezet"); delay(2000); digitalWrite(sein1, HIGH); digitalWrite(sein2, LOW); Serial.println("Blok1 vrij -> Blok2 bezet"); delay(2000);}
ULN2803 uitgangen parallel schakelen klinkt leuk, maar de Common pen kan maar 1.5A totaal voeren.
Ik zit aan twee protocollen te denken I2C of RS485 beide protocollen hebben voordelen.
....En denk (nooit open gemaakt, dus weet het echt niet zeker) dat een Digikeijs decoder ook wel eens ervan gebruik maakt. Per wissel twee transistoren tikt al wel snel aan anders....
... En ik zie dat je een 100ohm weerstand voor de ledjes hebt, dit vind ik echt heel weinig. Je knalt dan zo'n 30mA door het ledje!...
Nog even een vraagje je schreef dat je libraries voor de Arduino kon schrijven, hoe doe je dat Om het Arduino programma wat overzichtelijk te houden wil ik graag het onderstaand stukje programma in libraries zetten, of werk dat niet ?Er zullen wel meer "const int" en andere variablen er bij gezet worden als ik verder ben met dit project.Code: [Selecteer]const int Stijd = 10 * 1000; // Stoptijd stopblok const int Wtijd = 10 * 1000; // Wachttijd wachtblok //const int Noodstop = 1; // Noodstop actief hoog //const int Sda = 20; // I2C bus serial data // const int Scl = 21; // I2C bus serial clock // initialisatie noodstop const int LED = 52; // Stoppen Arduino Mega modelspoor sturing. const int LED1 = 53; // Vrijgave Arduino Mega modelspoor sturing. const int LEDN = 50; // Noodstop geactiveerd const int LEDV = 51; // Noodstop Opgeheven// initialisatie poorten blokken const int Blok1 = 22; // Inkomende spoor const int Blok2 = 23; // Uitgaande spoor const int Blok3 = 24; // Schaduwstation spoor 1 const int Blok4 = 44; // Schaduwstation spoor 2 const int Blok5 = 26; // Stationspoor spoor 1 const int Blok6 = 27; // Stationspoor spoor 2 const int Blok7 = 28; // Wachtspoor const int Blok8 = 29; // Goederenspoor const int Blok9 = 5; // Wisselblok 1 const int Blok10 = 6; // Wisselblok 2// initialisatie poorten voor wissel sturing const int Wis1 = 30; // wissel 1 const int Wis2 = 31; // wissel 2 const int Wis3 = 32; // wissel 3 const int Wis4 = 33; // wissel 4 const int Wis5 = 34; // wissel 5 const int Wis6 = 35; // wissel 6 const int Wis7 = 36; // wissel 7 const int Wis8 = 37; // wissel 8 const int Wis9 = 38; // wissel 9 const int Wis10 = 39; // wissel 10 const int Wis11 = 40; // wissel 11 const int Wis12 = 41; // wissel 12Zijn er programma's waarmee je libraries kunt schrijven.
const int Stijd = 10 * 1000; // Stoptijd stopblok const int Wtijd = 10 * 1000; // Wachttijd wachtblok //const int Noodstop = 1; // Noodstop actief hoog //const int Sda = 20; // I2C bus serial data // const int Scl = 21; // I2C bus serial clock // initialisatie noodstop const int LED = 52; // Stoppen Arduino Mega modelspoor sturing. const int LED1 = 53; // Vrijgave Arduino Mega modelspoor sturing. const int LEDN = 50; // Noodstop geactiveerd const int LEDV = 51; // Noodstop Opgeheven// initialisatie poorten blokken const int Blok1 = 22; // Inkomende spoor const int Blok2 = 23; // Uitgaande spoor const int Blok3 = 24; // Schaduwstation spoor 1 const int Blok4 = 44; // Schaduwstation spoor 2 const int Blok5 = 26; // Stationspoor spoor 1 const int Blok6 = 27; // Stationspoor spoor 2 const int Blok7 = 28; // Wachtspoor const int Blok8 = 29; // Goederenspoor const int Blok9 = 5; // Wisselblok 1 const int Blok10 = 6; // Wisselblok 2// initialisatie poorten voor wissel sturing const int Wis1 = 30; // wissel 1 const int Wis2 = 31; // wissel 2 const int Wis3 = 32; // wissel 3 const int Wis4 = 33; // wissel 4 const int Wis5 = 34; // wissel 5 const int Wis6 = 35; // wissel 6 const int Wis7 = 36; // wissel 7 const int Wis8 = 37; // wissel 8 const int Wis9 = 38; // wissel 9 const int Wis10 = 39; // wissel 10 const int Wis11 = 40; // wissel 11 const int Wis12 = 41; // wissel 12
const byte turnouts[] = {30, 31, 32, 33, 34, enz };void setTurnout(byte turnout, byte state){ digitalWrite(turnouts[turnout], state);}
En dan nog over je printjes op zich, ja ze gaan werken. Maar de layout is wel heel ruim opgezet, zonde van alle vrij ruimte. Ook heb je een dubbelzijdig ontwerp gemaakt. Ik snap dat het geen moer uitmaakt als je ze laat maken in China maar zoiets simpels krijg je denk ik ook nog wel op een zijde. Zou de print ook makkelijk zelf etsbaar maken.
Het is mij ook niet helemaal duidelijk hoe ik een libray met een klasse moet maken, heb je misschien een klein voorbeeld voor mij, om het wat begrijpelijker te maken.
Klasse "elektrisch apparaat"* void zetAan()* void zetUit()* int leesVerbruik()Klasse "elektrisch apparaat met temperatuurinstelling": afgeleid van klasse "elektrisch apparaat"* void stelTemperatuurIn( int temperatuur )* int leesTemperatuurKlasse "wasmachine": afgeleid van klasse "elektrisch apparaat met temperatuurinstelling"* void stelAantalToerenIn( int aantalToeren )* int leesAantalToeren()Klasse "koelkast": afgeleid van klasse "elektrisch apparaat met temperatuurinstelling"* void ontdooi()
Ik denk dat je het verhaal een beetje verkeerd hebt begrepen, het is absoluut niet de bedoeling om een nieuw digitaal systeem te ontwerpen, het is de bedoeling dat ik de Arduino ga gebruiken, om een Arduino blok gestuurde modelbaan te maken, die ik met de computer kan bedienen.Al mijn locomotieven zijn analoog (ongeveer 30 stuks),Dinamo is mij veel te duur, als ik zie wat het de treinenclub heeft gekost om de clubbaan om te bouwen naar Dinamo en de clubbaan is nog niet rij vaardig, laat dan maar.