Nu kan het volgens mij ook simpeler door een looplichtschakeling te maken die door een schakeldecoder door Koploper wordt geactiveerd. Nu is mijn kennis op het gebied van schakelingen beperkt en ik kwam al snel uit op meerdere timers en relais per schakeling. Heeft iemand een idee hoe ik dit eenvoudig kan oplossen?
... Permanent rood > groen 10 sec > oranje 2 seconden > permanent rood.... ik wil graag dat de groenfase langer duurt dan de oranje fase.
... Als ik nu de verbinding van het laatste kanaal naar de reset weglaat, blijft dan het looplicht stil staan, of gaat hij dan helemaal uit? Hier zou je volgens mij iets aan kunnen hangen van een relais, zodat hij naar permanent rood schakelt. Of zit ik iets mafs te bedenken?
/*Project: TramlichtDatum: 4-mei-2010Programmeur: Sander Brugmans Aanpassingen: Geen*/#include <pic.h>__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO);void delay(long i){ while(i--);}void main(void){ GPIO = 0x08; TRISIO = 0x08; ANSEL = 0x00; char puls = 0; while (1){ if (GPIO3 == 1){ delay(1000); if (GPIO3 == 1) puls++; } if (puls == 0) GPIO = 0x01; else{ GPIO = 0x04; delay(150000); GPIO = 0x02; delay(40000); GPIO = 0x01; puls = 0; } }}
Als je naar de code van Sander kijkt, dan lijkt me dat je de geelfase eenvoudig kunt verlengen door de waarde tussen haakjes achter delay te verhogen (in het onderste stukje code).Groeten, Marcel
/*Project: TramlichtDatum: 4-mei-2010Programmeur: Sander Brugmans */#include <pic.h>__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO);void delay(long i){ while(i--);}void main(void){ GPIO = 0x00; // Poort A = laag TRISIO = 0x08; // A0, 1, 2, 4 & 5 zijn output, A3 is input ANSEL = 0x00; // Geen analoog in char puls = 0; while (1){ if (GPIO3 == 1){ // Beetje debounce delay(1000); if (GPIO3 == 1) puls++; } if (puls == 0) GPIO = 0x01; // Rode LED else{ GPIO = 0x04; // Groene LED delay(250000); // Vertraging while(GPIO3 == 1); // Zolang er op port RA3 een 1 wordt aangeboden blijft het groen GPIO = 0x02; // Gele/oranje LED delay(80000); // Vertraging GPIO = 0x01; // Rode LED puls = 0; // Clear puls } }}