/*
* C-3436A
*
* C. Harrison Aug 30, 2014 Creation
*
*/
#include "C3436A.h"
void setup(){
void modes();
Serial.begin(19200);
Serial.println("C-3436A awake");
void init();
}
void loop(){
int i;
// check for input:
while( Serial.available()) {
char data = Serial.read();
if( data == '!') {
char cmd = Serial.read();
char dat = Serial.read();
char eol = Serial.read();
if( cmd = 1 ) {
// panel light}
if( dat = 0 ) {
digitalWrite( dial_light, LOW); }
if( dat = 1 ) {
digitalWrite( dial_light, HIGH); }
}}
// read all the data
for( i= 1; i < 6; i++ ) {
frac[i] = digitalRead( F[i]);
hund[i] = digitalRead( H[i]); }
pwr = digitalRead( powerpin );
// calulate the values: ftest, Htest;
int ftest, htest, ftest0, htest0, pwr, pwr0;
ftest = decode_F(calc_F());
htest = decode_H(calc_H());
if( ftest != ftest0 or htest != htest0 or pwr != pwr0 ) {
//send message to RSS
swap(); }
else {
; } // Do Nothing
}}
int decode_H( int data ){
int code[][2] = {{13,0},{9,108},{11,109},{5,110},
{27,111},{16,112},{30,113},{2,114},
{23,115},{8,116},{28,117},{1,118},
{7,119},{4,120},{24,121},{20,122},
{6,123},{18,124},{17,125},{10,126}};
for( int i= 0; i < 22; i++ ) {
if( data == code[i][0]) {
return code[i][1]; }
}}
int decode_F( int data ){
int code[] = {20, 5, 8, 2, 16, 4, 1, 9, 10, 18 };
for( int i= 0; i < 10; i++ ) {
if( data == code[i]) {
return i; }
}}
int calc_F(){
int temp = ( F[22] + (F[21]*2) + (F[20]*4) + (F[8]*8) + (F[7]*16));
return( temp );
}
int calc_H(){
int temp = ( H[19] + (H[18]*2) + (H[17]*4) + (H[5]*8) + (H[4]*16));
return( temp );
}
void swap(){
for( int i = 1; i < 6; i++ ) {
frac0[i] = frac[i];
hund0[i] = hund[i]; }
ftest0 = ftest;
htest0 = htest;
pwr0 = pwr;
}
void modes(){
pinMode( F[1], INPUT_PULLUP);
pinMode( F[2], INPUT_PULLUP);
pinMode( F[3], INPUT_PULLUP);
pinMode( F[4], INPUT_PULLUP);
pinMode( F[5], INPUT_PULLUP);
// hundreds array
pinMode(H[1], INPUT_PULLUP);
pinMode(H[2], INPUT_PULLUP);
pinMode(H[3], INPUT_PULLUP);
pinMode(H[4], INPUT_PULLUP);
pinMode(H[5], INPUT_PULLUP);
// Now we have to assign the power switch pin
pinMode( powerpin, INPUT_PULLUP);
// Now we have to assign the digital output pins
pinMode(dial_light, OUTPUT);
}
// we need to read the first time so while in loop the test will not fail.
// read all the pins and put then in arrays
void init(){
int i;
for( i=1; i< 7; i++){
frac0[i] = digitalRead(F[i]);
hund0[i] = digitalRead(H[i]); }
ftest0 = decode_F(calc_F());
htest0 = decode_H(calc_H());
pwr = digitalRead(powerpin); }