commit
1f58e338eb
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef CARDDISPENSER_H
|
||||||
|
#define CARDDISPENSER_H
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "Node.h"
|
#include "Node.h"
|
||||||
|
|
||||||
|
|
@ -15,3 +18,5 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef DDR_H
|
||||||
|
#define DDR_H
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "Node.h"
|
#include "Node.h"
|
||||||
|
|
||||||
|
|
@ -15,3 +18,5 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "IoBoard.h"
|
#include "IoBoard.h"
|
||||||
|
#include "SoftPWMRGB.h"
|
||||||
|
|
||||||
byte lightPin[] = {LT_START, LT_A, LT_B, LT_C, LT_D, LT_FXL, LT_FXR};
|
byte lightPin[] = {LT_START, LT_A, LT_B, LT_C, LT_D, LT_FXL, LT_FXR};
|
||||||
|
SoftPWMRGB LED6(LED6_R, LED6_G, LED6_B);
|
||||||
|
|
||||||
//contructor
|
//contructor
|
||||||
IoBoard::IoBoard(char* rCode)
|
IoBoard::IoBoard(char* rCode)
|
||||||
|
|
@ -66,9 +68,15 @@ IoBoard::IoBoard(char* rCode)
|
||||||
pinMode(LED3_R, OUTPUT);
|
pinMode(LED3_R, OUTPUT);
|
||||||
pinMode(LED3_G, OUTPUT);
|
pinMode(LED3_G, OUTPUT);
|
||||||
pinMode(LED3_B, OUTPUT);
|
pinMode(LED3_B, OUTPUT);
|
||||||
|
pinMode(LED4_R, OUTPUT);
|
||||||
|
pinMode(LED4_G, OUTPUT);
|
||||||
|
pinMode(LED4_B, OUTPUT);
|
||||||
|
pinMode(LED5_R, OUTPUT);
|
||||||
|
pinMode(LED5_G, OUTPUT);
|
||||||
|
pinMode(LED5_B, OUTPUT);
|
||||||
|
pinMode(LED6_R, OUTPUT);
|
||||||
|
pinMode(LED6_G, OUTPUT);
|
||||||
|
pinMode(LED6_B, OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IoBoard::init()
|
void IoBoard::init()
|
||||||
|
|
@ -77,19 +85,15 @@ void IoBoard::init()
|
||||||
keysLights = 0x00;
|
keysLights = 0x00;
|
||||||
test =0;
|
test =0;
|
||||||
|
|
||||||
|
valLED6_R = 0;
|
||||||
|
valLED6_G = 0;
|
||||||
|
valLED6_B = 0;
|
||||||
|
|
||||||
//for volume encoders
|
//for volume encoders
|
||||||
aVolRlast=1;
|
volR = 0;
|
||||||
bVolRlast=1;
|
volRState = 0;
|
||||||
volR=0;
|
volL = 0;
|
||||||
|
volLState = 0;
|
||||||
aVolLlast=1;
|
|
||||||
bVolLlast=1;
|
|
||||||
volL=0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IoBoard::update()
|
void IoBoard::update()
|
||||||
|
|
@ -116,50 +120,58 @@ void IoBoard::update()
|
||||||
|
|
||||||
//read volume encoders
|
//read volume encoders
|
||||||
|
|
||||||
int aVolR = digitalRead(VOLR_A);
|
byte volRS = volRState & 3;
|
||||||
int bVolR = digitalRead(VOLR_B);
|
|
||||||
|
|
||||||
if (aVolR != aVolRlast)//position changed
|
if (digitalRead(VOLR_B)) volRS |= 4;
|
||||||
|
if (digitalRead(VOLR_A)) volRS |= 8;
|
||||||
|
|
||||||
|
volRState = (volRS >> 2);
|
||||||
|
|
||||||
|
switch (volRS)
|
||||||
{
|
{
|
||||||
if (bVolR != aVolR)
|
case 0: case 5: case 10: case 15:
|
||||||
volR++;
|
break;
|
||||||
else
|
case 1: case 7: case 8: case 14:
|
||||||
volR--;
|
volR++;
|
||||||
|
break;
|
||||||
|
case 2: case 4: case 11: case 13:
|
||||||
|
volR--;
|
||||||
|
break;
|
||||||
|
case 3: case 12:
|
||||||
|
volR += 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
volR -= 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bVolR != bVolRlast)//position changed
|
byte volLS = volLState & 3;
|
||||||
|
|
||||||
|
if (digitalRead(VOLL_B)) volLS |= 4;
|
||||||
|
if (digitalRead(VOLL_A)) volLS |= 8;
|
||||||
|
|
||||||
|
volLState = (volLS >> 2);
|
||||||
|
|
||||||
|
switch (volLS)
|
||||||
{
|
{
|
||||||
if (bVolR != aVolR)
|
case 0: case 5: case 10: case 15:
|
||||||
volR--;
|
break;
|
||||||
else
|
case 1: case 7: case 8: case 14:
|
||||||
volR++;
|
volL++;
|
||||||
|
break;
|
||||||
|
case 2: case 4: case 11: case 13:
|
||||||
|
volL--;
|
||||||
|
break;
|
||||||
|
case 3: case 12:
|
||||||
|
volL += 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
volL -= 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
aVolRlast = aVolR;
|
// Update the software PWM RGB light
|
||||||
bVolRlast = bVolR;
|
LED6.setPWM(valLED6_R, valLED6_G, valLED6_B);
|
||||||
|
|
||||||
|
|
||||||
int aVolL = digitalRead(VOLL_A);
|
|
||||||
int bVolL = digitalRead(VOLL_B);
|
|
||||||
|
|
||||||
if (aVolL != aVolLlast)//position changed
|
|
||||||
{
|
|
||||||
if (bVolL != aVolL)
|
|
||||||
volL++;
|
|
||||||
else
|
|
||||||
volL--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bVolL != bVolLlast)//position changed
|
|
||||||
{
|
|
||||||
if (bVolL != aVolL)
|
|
||||||
volL--;
|
|
||||||
else
|
|
||||||
volL++;
|
|
||||||
}
|
|
||||||
|
|
||||||
aVolLlast = aVolL;
|
|
||||||
bVolLlast = bVolL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -221,15 +233,25 @@ short IoBoard::processRequest(byte* request, byte* answer)
|
||||||
|
|
||||||
//rgb leds
|
//rgb leds
|
||||||
|
|
||||||
analogWrite(LED1_R,request[5+19]<<1);
|
analogWrite(LED1_R,request[5+4]<<1);
|
||||||
analogWrite(LED1_G,request[5+20]<<1);
|
analogWrite(LED1_G,request[5+5]<<1);
|
||||||
analogWrite(LED1_B,request[5+21]<<1);
|
analogWrite(LED1_B,request[5+6]<<1);
|
||||||
analogWrite(LED2_R,request[5+16]<<1);
|
analogWrite(LED2_R,request[5+7]<<1);
|
||||||
analogWrite(LED2_G,request[5+17]<<1);
|
analogWrite(LED2_G,request[5+8]<<1);
|
||||||
analogWrite(LED2_B,request[5+18]<<1);
|
analogWrite(LED2_B,request[5+9]<<1);
|
||||||
analogWrite(LED3_R,request[5+13]<<1);
|
analogWrite(LED3_R,request[5+10]<<1);
|
||||||
analogWrite(LED3_G,request[5+14]<<1);
|
analogWrite(LED3_G,request[5+11]<<1);
|
||||||
analogWrite(LED3_B,request[5+15]<<1);
|
analogWrite(LED3_B,request[5+12]<<1);
|
||||||
|
analogWrite(LED4_R,request[5+13]<<1);
|
||||||
|
analogWrite(LED4_G,request[5+14]<<1);
|
||||||
|
analogWrite(LED4_B,request[5+15]<<1);
|
||||||
|
analogWrite(LED5_R,request[5+16]<<1);
|
||||||
|
analogWrite(LED5_G,request[5+17]<<1);
|
||||||
|
analogWrite(LED5_B,request[5+18]<<1);
|
||||||
|
// Get the requested values for the software PWM RGB light
|
||||||
|
valLED6_R = request[5+19]<<1;
|
||||||
|
valLED6_G = request[5+20]<<1;
|
||||||
|
valLED6_B = request[5+21]<<1;
|
||||||
|
|
||||||
/* input control format:
|
/* input control format:
|
||||||
byte 0 : 8 high bits of L vol
|
byte 0 : 8 high bits of L vol
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef IOBOARD_H
|
||||||
|
#define IOBOARD_H
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "Node.h"
|
#include "Node.h"
|
||||||
|
|
||||||
|
|
@ -20,13 +23,15 @@ private:
|
||||||
boolean test;
|
boolean test;
|
||||||
boolean svc;
|
boolean svc;
|
||||||
//for volume encoders
|
//for volume encoders
|
||||||
int aVolRlast;
|
|
||||||
int bVolRlast;
|
|
||||||
unsigned int volR;
|
unsigned int volR;
|
||||||
|
byte volRState;
|
||||||
int aVolLlast;
|
|
||||||
int bVolLlast;
|
|
||||||
unsigned int volL;
|
unsigned int volL;
|
||||||
|
byte volLState;
|
||||||
|
// Values for the software PWM RGB light
|
||||||
|
int valLED6_R;
|
||||||
|
int valLED6_G;
|
||||||
|
int valLED6_B;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef LEDBOARD_H
|
||||||
|
#define LEDBOARD_H
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "Node.h"
|
#include "Node.h"
|
||||||
|
|
||||||
|
|
@ -16,3 +19,5 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "SoftPWMRGB.h"
|
||||||
|
|
||||||
|
SoftPWMRGB::SoftPWMRGB(int pinR, int pinG, int pinB)
|
||||||
|
{
|
||||||
|
period = 2000; // Period set to 2000us to obtain a 500Hz signal)
|
||||||
|
|
||||||
|
pin[0] = pinR;
|
||||||
|
pin[1] = pinG;
|
||||||
|
pin[2] = pinB;
|
||||||
|
|
||||||
|
for(int i=0;i<3;i++)
|
||||||
|
{
|
||||||
|
val[i] = 0;
|
||||||
|
previousVal[i] = -1;
|
||||||
|
onTime[i] = 0;
|
||||||
|
offTime[i] = 0;
|
||||||
|
previousMicros[i] = 0;
|
||||||
|
state[i] = LOW;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SoftPWMRGB::setPWM(int valR, int valG, int valB)
|
||||||
|
{
|
||||||
|
unsigned long currentMicros = micros(); // Get the current time
|
||||||
|
|
||||||
|
val[0] = valR;
|
||||||
|
val[1] = valG;
|
||||||
|
val[2] = valB;
|
||||||
|
|
||||||
|
for(int i=0;i<3;i++)
|
||||||
|
{
|
||||||
|
if(previousVal[i] != val[i]) // Only calculate the ON and OFF time if the value has changed
|
||||||
|
{
|
||||||
|
onTime[i] = (period*(unsigned long)val[i])/255UL; // Not sure if that much variable type casting is necessary, but it works
|
||||||
|
offTime[i] = period - onTime[i];
|
||||||
|
|
||||||
|
previousVal[i] = val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(state[i] == LOW && currentMicros - previousMicros[i] >= offTime[i] && offTime[i] != period) // If the LED is OFF AND we exceeded the OFF time AND the OFF time isn't equal to the period, turn the LED ON
|
||||||
|
{
|
||||||
|
state[i] = HIGH;
|
||||||
|
previousMicros[i] = currentMicros;
|
||||||
|
}
|
||||||
|
else if(state[i] == HIGH && currentMicros - previousMicros[i] >= onTime[i] && onTime[i] != period) // Else, if the LED is ON AND we exceeded the ON time AND the ON time isn't equal to the period, turn the LED OFF
|
||||||
|
{
|
||||||
|
state[i] = LOW;
|
||||||
|
previousMicros[i] = currentMicros;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write to the pins
|
||||||
|
digitalWrite(pin[0], state[0]);
|
||||||
|
digitalWrite(pin[1], state[1]);
|
||||||
|
digitalWrite(pin[2], state[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef SOFTPWMRGB_H
|
||||||
|
#define SOFTPWMRGB_H
|
||||||
|
|
||||||
|
class SoftPWMRGB
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SoftPWMRGB(int pinR, int pinG, int pinB);
|
||||||
|
void setPWM(int valR, int valG, int valB); // Call this function in a loop to be sure that LED states are updated
|
||||||
|
|
||||||
|
private:
|
||||||
|
unsigned long period; // Period of the PWM signal in microseconds
|
||||||
|
|
||||||
|
int pin[3]; // We'll store the RGB LED's pins here
|
||||||
|
int val[3]; // We'll store our requested RGB values here
|
||||||
|
int previousVal[3]; // Used to check if the value has changed
|
||||||
|
unsigned long onTime[3]; // Calculated ON times
|
||||||
|
unsigned long offTime[3]; // Calculated OFF times
|
||||||
|
unsigned long previousMicros[3]; // Used to keep track of time between each change of state
|
||||||
|
int state[3]; // We'll store the RGB LEDs states here
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include "Reader.h"
|
#include "Reader.h"
|
||||||
#include "LedBoard.h"
|
#include "LedBoard.h"
|
||||||
#include "IoBoard.h"
|
#include "IoBoard.h"
|
||||||
|
#include "SoftPWMRGB.h"
|
||||||
#include "CardDispenser.h"
|
#include "CardDispenser.h"
|
||||||
#include "RR10.h"
|
#include "RR10.h"
|
||||||
#include "SL015M.h"
|
#include "SL015M.h"
|
||||||
|
|
|
||||||
|
|
@ -18,24 +18,24 @@
|
||||||
#define BT_B A3
|
#define BT_B A3
|
||||||
#define BT_C A4
|
#define BT_C A4
|
||||||
#define BT_D A5
|
#define BT_D A5
|
||||||
#define BT_START 50
|
#define BT_START 52
|
||||||
#define BT_TEST 52
|
#define BT_TEST 50
|
||||||
#define BT_SVC 40
|
#define BT_SVC 48
|
||||||
|
|
||||||
//input pins for volume encoders (phase A and phase B for each)
|
//input pins for volume encoders (phase A and phase B for each)
|
||||||
#define VOLR_A 42
|
#define VOLR_A 36
|
||||||
#define VOLR_B 44
|
#define VOLR_B 38
|
||||||
#define VOLL_A 46
|
#define VOLL_A 40
|
||||||
#define VOLL_B 48
|
#define VOLL_B 42
|
||||||
|
|
||||||
//pins for sdvx lights (outputs)
|
//pins for sdvx lights (outputs)
|
||||||
#define LT_START 53
|
#define LT_START 53
|
||||||
#define LT_A 51
|
#define LT_A 51
|
||||||
#define LT_B 49
|
#define LT_B 49
|
||||||
#define LT_C 47
|
#define LT_C 47
|
||||||
#define LT_D 45
|
#define LT_D 43
|
||||||
#define LT_FXL 43
|
#define LT_FXL 41
|
||||||
#define LT_FXR 41
|
#define LT_FXR 39
|
||||||
|
|
||||||
//pins for sdvx/jubeat RGB LEDs (use PWM pins)
|
//pins for sdvx/jubeat RGB LEDs (use PWM pins)
|
||||||
#define LED1_R 7
|
#define LED1_R 7
|
||||||
|
|
@ -50,9 +50,17 @@
|
||||||
#define LED3_G 12
|
#define LED3_G 12
|
||||||
#define LED3_B 11
|
#define LED3_B 11
|
||||||
|
|
||||||
|
#define LED4_R 4
|
||||||
|
#define LED4_G 3
|
||||||
|
#define LED4_B 2
|
||||||
|
|
||||||
|
#define LED5_R 46
|
||||||
|
#define LED5_G 45
|
||||||
|
#define LED5_B 44
|
||||||
|
|
||||||
|
#define LED6_R A8
|
||||||
|
#define LED6_G A9
|
||||||
|
#define LED6_B A10
|
||||||
//pins for card reader 1 keypad (colls ABC, rows 1234)
|
//pins for card reader 1 keypad (colls ABC, rows 1234)
|
||||||
/*
|
/*
|
||||||
### Keypad 3x4 Matrix ###
|
### Keypad 3x4 Matrix ###
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue