|
- /*
- Keyboard Clicker
- */
-
- int outPinsSize = 2;
- int outPins[] = { 13, 12 };
-
- int outShift = 0;
- int lastCount = 0;
-
- int outBell = 11;
-
- #define RELAY_OFF HIGH
- #define RELAY_ON LOW
-
- void setup() {
- pinMode(LED_BUILTIN, OUTPUT);
-
- for (int i = 0; i < outPinsSize; i++) {
- pinMode(outPins[i], OUTPUT);
- digitalWrite(outPins[i], RELAY_OFF);
- }
-
- pinMode(outBell, OUTPUT);
- digitalWrite(outBell, RELAY_OFF);
-
- // initialize serial:
- Serial.begin(115200);
- }
-
- void loop() {
- }
-
- /*
- SerialEvent occurs whenever a new data comes in the hardware serial RX. This
- routine is run between each time loop() runs, so using delay inside loop can
- delay response.
- */
- void serialEvent() {
- while (Serial.available()) {
- // get the new byte:
- char inChar = (char)Serial.read();
- //Serial.println(inChar);
- if (inChar >= '0' && inChar <= '9') {
- int count = inChar - '0';
- if (count >= lastCount) {
- outShift = (outShift + 1) % outPinsSize;
- }
- lastCount = count;
- for (int i = 0; i < outPinsSize; i++) {
- digitalWrite(outPins[(i + outShift) % outPinsSize], ((count > i) ? RELAY_ON : RELAY_OFF));
- }
- } else {
- if (inChar == '(') {
- digitalWrite(outBell, RELAY_ON);
- delay(20);
- digitalWrite(outBell, RELAY_OFF);
- }
- }
- }
- }
|