0,0 → 1,112 |
// Gas Discharge Lamps controller |
#define VERSION "$Revision: 3654 $" |
|
|
// Triacs |
int t1 = 2; // PD2 - lamp 1 |
int t2 = 3; // PD3 - lamp 2 |
int t3 = 4; // PD4 - |
int t4 = 5; // PD5 - |
int t5 = 6; // PD6 - |
int t6 = 7; // PD7 |
int t7 = 8; // PB0 |
int t8 = 9; // PB1 |
|
int n; // Counter |
char state; // State of Gas Lamps |
|
void info () // Print an information string |
{ |
Serial.print("Gas Discharge Lamps Controller "); |
Serial.println(VERSION); |
Serial.println("Commands: abcdefghABCDEFGHitRS"); |
Serial.println("a = OFF lamp 1 / A = ON lamp 1"); |
Serial.println("i = info"); |
Serial.println("t = telemetry"); |
Serial.println("R = reset"); |
} |
|
|
void pstatus() // Print status to serial line |
{ |
for (n=1;n<=8;n++) |
{ |
if(digitalRead(n+1)) |
{ |
Serial.print((char)('A'+n-1)); |
} |
else |
{ |
Serial.print((char)('a'+n-1)); |
} |
} |
Serial.println(); |
} |
|
|
// the setup routine runs once when you press reset: |
void setup() |
{ |
// initialize the digital pin as an output and switch off |
digitalWrite(t1, LOW); |
digitalWrite(t2, LOW); |
digitalWrite(t3, LOW); |
digitalWrite(t4, LOW); |
digitalWrite(t5, LOW); |
digitalWrite(t6, LOW); |
digitalWrite(t7, LOW); |
digitalWrite(t8, LOW); |
pinMode(t1, OUTPUT); |
pinMode(t2, OUTPUT); |
pinMode(t3, OUTPUT); |
pinMode(t4, OUTPUT); |
pinMode(t5, OUTPUT); |
pinMode(t6, OUTPUT); |
pinMode(t7, OUTPUT); |
pinMode(t8, OUTPUT); |
state = 'a'; |
|
// initialize the serial port |
Serial.begin(9600); |
Serial.println(); |
Serial.println("Cvak."); |
|
Serial.println("Hmmm...."); |
info(); |
} |
|
// the loop routine runs over and over again forever: |
void loop() |
{ |
byte inByte; // Character from serial line |
|
if (Serial.available() > 0) // wait for a char |
{ |
// get incoming byte: |
inByte = Serial.read(); |
|
switch (inByte) |
{ |
case 'i': // Print Info |
info(); |
break; |
|
case 'R': // Reset |
asm volatile (" jmp 0"); |
break; |
|
} |
|
if ( (inByte >= 'a') and (inByte <= 'h')) // Switch OFF other triacs |
{ |
digitalWrite(inByte-'a'+2,LOW); |
} |
|
if ( (inByte >= 'A') and (inByte <= 'H')) // Switch ON other triacs |
{ |
digitalWrite(inByte-'A'+2, HIGH); |
} |
|
pstatus(); // Print states |
} |
} |