aansturing racebaan

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 1
Geregistreerd: 24 Okt 2016, 09:47

aansturing racebaan

Berichtdoor miltonamilcar » 24 Okt 2016, 10:14

hoi
ik heb op school een project
in dit project moeten wij een racebaan aansturen met een quiz door middel van een arduino, maar ik zelf ben nog al en rookie op dit gebied :P.
de bedoeling is dat er 2 personen tegen elkaar een quiz kunnen spellen.
de racebaan heeft 2 stoplichten die de vraag keuze van de speler laat zien
als er een vraag goed beantwoord word krijgt de auto van de speler een boost met behulp van een ralai, verder moet er een uitgang op de arduino komen die ik op een muis of toetsenbord aansluit zodat ik daarmee een powerpoint kan aansturen die de quizvragen laat zien op mijn computer.
ik heb al een beetje code geschreven voor 1 persoon
maar hier zitten nog wat fouten in.

mijn vraag is of jullie er naar kunnen kijken voor verbeteringen en eventueel een tweede persoon kunnen toevoegen(ik kan gebruik maken van 2 arduinos als dit nodig is)

alvast bedank voor de moeite.



hier is ook alvast de code de code staat ook in een bijlage
cpp code
//geschreven door milton ribeiro
//buttonA=groen. buttonB=oranje. buttonC=rood

int buttonA = 22;
int buttonB = 23;
int buttonC = 24;
int stoplichtrood = 17;
int stoplichtoranje = 16;
int stoplichtgroen = 15;
int speedA = 14;

void setup()
{
pinMode(buttonA,INPUT);
pinMode(buttonB,INPUT);
pinMode(buttonC,INPUT);
pinMode(stoplichtoranje,OUTPUT);
pinMode(stoplichtrood,OUTPUT);
pinMode(stoplichtgroen,OUTPUT);
pinMode(speedA,OUTPUT) ;
}

void loop()
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
delay(2500);
{digitalWrite(stoplichtgroen+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtgroen+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
delay(2500);
{digitalWrite(stoplichtrood+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtrood+speedA,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
delay(2500);
{digitalWrite(stoplichtrood+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtrood+speedA,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
delay(2500);
{digitalWrite(stoplichtrood+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtrood+speedA,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
delay(2500);
{digitalWrite(stoplichtgroen+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtgroen+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}
{
delay(5000);
if (digitalRead(buttonA) == HIGH)
{digitalWrite(stoplichtgroen,HIGH);
{digitalWrite(stoplichtrood+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtgroen,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonB) == HIGH)
{digitalWrite(stoplichtoranje,HIGH);
{digitalWrite(stoplichtrood+stoplichtgroen,LOW);
delay(5000);
{digitalWrite(stoplichtoranje,LOW);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,HIGH);
delay(2500);
{digitalWrite(stoplichtoranje+speedA,LOW);
}
}
else
{
delay(5000);
if(digitalRead(buttonC)== HIGH)
{digitalWrite(stoplichtrood,HIGH);
{digitalWrite(stoplichtgroen+stoplichtoranje,LOW);
delay(5000);
{digitalWrite(stoplichtrood,LOW);
}
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: aansturing racebaan

Berichtdoor nicoverduin » 24 Okt 2016, 11:12

Ik zou eerst jouw code ff met de <CTRL-T> functie formatteren. Dan zul je zien dat je accolades niet kloppen.
Verder moet je wel heel veel geduld hebben met een delay van 5 seconden elke keer. Ik zou eens kijken naar blink-without-delay hoe je zonder delays kan werken.
Dus pas je code eerst aan dan zou het zomaar eens kunnen dat je code wel compileert.
Verder nog een tip:
Als je zegt dat er nog fouten in zitten, zet dan tevens de foutboodschappen die je krijgt hier neer. Dan weet een ander ook waar je het over hebt.

@edit: En gebruik alleen accolades bij functies if- en while statements. Nu gebruik je ze om de haverklap wat er een zooitje van maakt. bekijk dit eens: https://www.arduino.cc/en/Reference/Braces
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: aansturing racebaan

Berichtdoor Koepel » 24 Okt 2016, 14:33

Deze regel : digitalWrite(stoplichtrood+stoplichtoranje,LOW)
Die gaat de waarde van 'stoplichtrood' optellen bij 'stoplichtoranje', dat is 17 + 16. Die pin wordt vervolgens LOW gemaakt, dat is dus pin 33 die LOW wordt. Je hebt een digitalWrite() nodig voor iedere pin die je wilt wijzigen.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: aansturing racebaan

Berichtdoor shooter » 25 Okt 2016, 17:15

zoveel delay gaat niet werken, dus eerst maar eens zien hoe je het opbouwd.
maak een schema met status die mogelijk zijn.
maak van elke status een functie
in de loop dan een klein stukje waar je van status kunt veranderen.
al die writes en zo in de functies zetten.
daarmee zorg je dat de code leesbaar blijft.
verder kun je geen 2 pinnen tegelijk bedienen, dus gewoon 3 regels van maken, het nogmaals uitzetten van een led is geen probleem, dus gewoon altijd alle leds zetten.
maak een proefopstelling en ik denk dat je een mega gebruikt, daar kunnen meerdere gebruikers op.
zorg wel dat de relais op een aparte voeding zitten, want dat kan de megavoeding niet aan.

je software is afgezien dan van wat nico en zo schrijven eigenlijk een heel aardig begin, maar wel een beetje teveel schrijfwerk, als je eerst de verschillende situaties beschrijft, dan komt het echte schrijven vanzelf.
je kunt via de monitor wel commandos heen en weer laten gaan hoor, maar dat moet je dan in de PC bijvoorbeeld met datasnip afvangen.
paul deelen
shooter@home.nl

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten