"Body"opnieuw starten zodra ingang veranderd.
10 berichten
• Pagina 1 van 1
- JandeBoer80
- Berichten: 4
- Geregistreerd: 08 Apr 2020, 17:48
- Woonplaats: Sprang Capelle
"Body"opnieuw starten zodra ingang veranderd.
Hallo allemaal.
Ik ben op zoek hoe het volgende kan programmeren:
switch A = low
er gebeurd niks
switch A = high
start body 1
weer terug naar begin
dat is niet zo moeilijk te maken. Maar ik wil graag dat tijdens de uitvoer van body als dan switch A weer high wordt dat dan body 1 opnieuw begint.
Wie kan mij daarbij helpen ?
mvg
Jan
Ik ben op zoek hoe het volgende kan programmeren:
switch A = low
er gebeurd niks
switch A = high
start body 1
weer terug naar begin
dat is niet zo moeilijk te maken. Maar ik wil graag dat tijdens de uitvoer van body als dan switch A weer high wordt dat dan body 1 opnieuw begint.
Wie kan mij daarbij helpen ?
mvg
Jan
Advertisement
Re: "Body"opnieuw starten zodra ingang veranderd.
if !A reset body
if A run body
if A run body
paul deelen
shooter@home.nl
shooter@home.nl
Re: "Body"opnieuw starten zodra ingang veranderd.
je mag ook best wel de body vertellen hoor, dan kunnen we ook gerichter antwoord geven
paul deelen
shooter@home.nl
shooter@home.nl
- JandeBoer80
- Berichten: 4
- Geregistreerd: 08 Apr 2020, 17:48
- Woonplaats: Sprang Capelle
Re: "Body"opnieuw starten zodra ingang veranderd.
Hierbij de code.
Ik ben in bezit van een zgn spoorsein en een overweglamp + bel.
Als er nu iemand bij mij het erf oprijdt dan zit er een sensor die dat detecteert. Dan wil ik dat de overweglamp en bel afgaan. Daarna laat het dwergsein diverse seinbeelden zien.
Nu wil ik erin hebben dat bij het tonen van de seinbeelden en er komt weer iemand het erf op terwijl het programma loopt wil ik graag dat de eerst de bel weer afgaat en dan programma verder afloopt.
int Rood = 8;
int Geel = 9;
int Groen = 10;
volatile int Lamp1 = 3;
volatile int Lamp2 = 4;
volatile int Bel = 5;
int sensor = 2;
int switchState = LOW;
// Voer uit bij de start van programma
void setup() {
pinMode(Rood, OUTPUT);
pinMode(Geel, OUTPUT);
pinMode(Groen, OUTPUT);
pinMode(Lamp1, OUTPUT);
pinMode(Lamp2, OUTPUT);
pinMode(Bel, OUTPUT);
pinMode(sensor, INPUT);
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
digitalWrite(Lamp1, LOW);
digitalWrite(Lamp2, LOW);
digitalWrite(Bel, LOW);
}
void loop()
{
switchState = digitalRead(sensor);
if (switchState == LOW) {
}
else{
int i=0;
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
while (i<5) {
digitalWrite(Bel, HIGH);
digitalWrite(Lamp1, HIGH);
delay(500);
digitalWrite(Lamp1, LOW);
digitalWrite(Lamp2, HIGH);
delay(500);
digitalWrite(Lamp2, LOW);
digitalWrite(Bel,LOW);
i++;}
delay(1000);
int i1=0;
while (i1<2) {
digitalWrite(Rood, HIGH);
delay(200);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
delay(200);
digitalWrite(Geel,LOW);
digitalWrite(Groen, HIGH);
delay(200);
digitalWrite(Groen, LOW);
i1++;}
delay(500);
int ii=0;
while (ii<3) {
digitalWrite(Rood, HIGH);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, HIGH);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
delay(500);
ii++;}
delay(500);
int i2=0;
while (i2<3) {
digitalWrite(Rood, HIGH);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, LOW);
delay(500);
i2++;}
delay(500);
int i3=0;
while (i3<3) {
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, HIGH);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, LOW);
delay(500);
i3++;}
delay(500);
}
}
Ik ben in bezit van een zgn spoorsein en een overweglamp + bel.
Als er nu iemand bij mij het erf oprijdt dan zit er een sensor die dat detecteert. Dan wil ik dat de overweglamp en bel afgaan. Daarna laat het dwergsein diverse seinbeelden zien.
Nu wil ik erin hebben dat bij het tonen van de seinbeelden en er komt weer iemand het erf op terwijl het programma loopt wil ik graag dat de eerst de bel weer afgaat en dan programma verder afloopt.
int Rood = 8;
int Geel = 9;
int Groen = 10;
volatile int Lamp1 = 3;
volatile int Lamp2 = 4;
volatile int Bel = 5;
int sensor = 2;
int switchState = LOW;
// Voer uit bij de start van programma
void setup() {
pinMode(Rood, OUTPUT);
pinMode(Geel, OUTPUT);
pinMode(Groen, OUTPUT);
pinMode(Lamp1, OUTPUT);
pinMode(Lamp2, OUTPUT);
pinMode(Bel, OUTPUT);
pinMode(sensor, INPUT);
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
digitalWrite(Lamp1, LOW);
digitalWrite(Lamp2, LOW);
digitalWrite(Bel, LOW);
}
void loop()
{
switchState = digitalRead(sensor);
if (switchState == LOW) {
}
else{
int i=0;
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
while (i<5) {
digitalWrite(Bel, HIGH);
digitalWrite(Lamp1, HIGH);
delay(500);
digitalWrite(Lamp1, LOW);
digitalWrite(Lamp2, HIGH);
delay(500);
digitalWrite(Lamp2, LOW);
digitalWrite(Bel,LOW);
i++;}
delay(1000);
int i1=0;
while (i1<2) {
digitalWrite(Rood, HIGH);
delay(200);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
delay(200);
digitalWrite(Geel,LOW);
digitalWrite(Groen, HIGH);
delay(200);
digitalWrite(Groen, LOW);
i1++;}
delay(500);
int ii=0;
while (ii<3) {
digitalWrite(Rood, HIGH);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, HIGH);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
delay(500);
ii++;}
delay(500);
int i2=0;
while (i2<3) {
digitalWrite(Rood, HIGH);
digitalWrite(Geel, LOW);
digitalWrite(Groen, LOW);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, LOW);
delay(500);
i2++;}
delay(500);
int i3=0;
while (i3<3) {
digitalWrite(Rood, LOW);
digitalWrite(Geel, LOW);
digitalWrite(Groen, HIGH);
delay(500);
digitalWrite(Rood, LOW);
digitalWrite(Geel, HIGH);
digitalWrite(Groen, LOW);
delay(500);
i3++;}
delay(500);
}
}
Re: "Body"opnieuw starten zodra ingang veranderd.
ik zie nu wat je met bodie bedoeld, alles staat in een lange reeks.
zorg ervoor dat de i een naam krijgt dat is handig.
verder kun je dus met state veel meer zoals springen naar een andere etc. zeker als je ze telkens 10 laat verspringen zoals vroeger met basic gedaan werd.
Ik zie dat je ook nog heel veel delay gebruikt, Kijkk eerst naar blink without delay dan kun je ineens heel veel tegelijk doen.
zorg ervoor dat de i een naam krijgt dat is handig.
verder kun je dus met state veel meer zoals springen naar een andere etc. zeker als je ze telkens 10 laat verspringen zoals vroeger met basic gedaan werd.
Ik zie dat je ook nog heel veel delay gebruikt, Kijkk eerst naar blink without delay dan kun je ineens heel veel tegelijk doen.
paul deelen
shooter@home.nl
shooter@home.nl
- JandeBoer80
- Berichten: 4
- Geregistreerd: 08 Apr 2020, 17:48
- Woonplaats: Sprang Capelle
Re: "Body"opnieuw starten zodra ingang veranderd.
Ok bedankt. Hoe zou ik dit programma om kunnen zetten naar blink ipv delay ? Kan iemand me helpen aan een voorbeeld ?
Re: "Body"opnieuw starten zodra ingang veranderd.
elke situatie is een switch state, ofwel gewoon een int die aangeeft weke situatie aan de gang is.
in de loop zet je dan een timer neer die bijvoorbeeld een tijd aftelt van 1000 msec. met if (millis-starttimer)>wachttijd dan status veranderen in bijvoorbeeld 300
in een ander stuk zeg je dan if 300 dan lampA rood, etc.
ofwel een andereeen lamp of zo.
omdat de loop dan heel snel gaat kun je testen op veel meer tijden of situaties.
in de loop zet je dan een timer neer die bijvoorbeeld een tijd aftelt van 1000 msec. met if (millis-starttimer)>wachttijd dan status veranderen in bijvoorbeeld 300
in een ander stuk zeg je dan if 300 dan lampA rood, etc.
ofwel een andereeen lamp of zo.
omdat de loop dan heel snel gaat kun je testen op veel meer tijden of situaties.
paul deelen
shooter@home.nl
shooter@home.nl
Re: "Body"opnieuw starten zodra ingang veranderd.
als je een schema maakt met hoe de states zijn en alle verbindingen dan is er vast wel iemand die een begin schrijft
paul deelen
shooter@home.nl
shooter@home.nl
- JandeBoer80
- Berichten: 4
- Geregistreerd: 08 Apr 2020, 17:48
- Woonplaats: Sprang Capelle
Re: "Body"opnieuw starten zodra ingang veranderd.
Bij deze.
De ingang "poort" wil ik graag zodra deze actief wordt dan het programma Seinbeeld stopt en het programma meteen doorgaat naar bel + lampen
Re: "Body"opnieuw starten zodra ingang veranderd.
prima diagram makkelijk te vertalen , Nu ervoor zorgen dat je het vertaalt, zoals waar zet je de timer aan, en beter is als je >= schrijft dan heb je altijd raak. 30 min is trouwens 30*60000 milliseconden en dat moet in een unsigned long integer. Het blok seinbeeld uitbreiden naar een state machine switch case als een timer gedaan is dan de state veranderen van 10 naar 20 waardoor andere leds aangaan.
die 2e poort actief kan weg, als het programma doorloopt. dat betekent dus ook gelijk dat zodra poort actief is er gelijk naar de bel gesprongen wordt. Dan moet je wel gaan nadenken over wat er gebeurt als de poort nogmaals aangaat ook daar moet een timer komen.
die 2e poort actief kan weg, als het programma doorloopt. dat betekent dus ook gelijk dat zodra poort actief is er gelijk naar de bel gesprongen wordt. Dan moet je wel gaan nadenken over wat er gebeurt als de poort nogmaals aangaat ook daar moet een timer komen.
paul deelen
shooter@home.nl
shooter@home.nl
10 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten