annotate service/starArduino/star/star.pde @ 828:a422d875d94d

barcode support on star. triggers mpd song Ignore-this: 1038c3d0501bba595fbf701e30acac6 darcs-hash:20120304114228-312f9-8fc9a9198be2044359f35aebcd1c428a58cb4ea2.gz
author drewp <drewp@bigasterisk.com>
date Sun, 04 Mar 2012 03:42:28 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
828
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 /*
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 board is like diecimila with atmega168
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 #include <SoftwareSerial.h>
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 int datapin = 10; // DI
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 int latchpin = 11; // LI
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 int enablepin = 12; // EI
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 int clockpin = 13; // CI
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 unsigned long SB_CommandPacket;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 int SB_CommandMode;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 int SB_BlueCommand;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 int SB_RedCommand;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 int SB_GreenCommand;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 #define MAXCHANS 16
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 int vals[MAXCHANS * 3];
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 int addr = 0; // which vals element to set next
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 int currentChans = MAXCHANS;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 unsigned char rotation = 0; // position of knob
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 unsigned char lastRotPosition = 0; // 2*A+1*B
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 #define TEMP_ENABLED 1
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 #if TEMP_ENABLED
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 #include <OneWire.h>
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 #include <DallasTemperature.h>
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 OneWire oneWire(4); // digital IO 4
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 DallasTemperature sensors(&oneWire);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 DeviceAddress tempSensorAddress;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 #endif
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 /*
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 barcode red: +5V
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 barcode white: gnd
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41 SoftwareSerial barcode = SoftwareSerial(/* rx pin, green */ 3,
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 /* tx pin, black */ 2,
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 /* inverse */ true);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 void shiftOutLocal(uint8_t dataPin, uint8_t clockPin, byte val)
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 int i;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49 for (i = 0; i < 8; i++) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 digitalWrite(dataPin, !!(val & (1 << (7 - i))));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 digitalWrite(clockPin, HIGH);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 digitalWrite(clockPin, LOW);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 void SB_SendPacket() {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 SB_CommandPacket = SB_CommandMode & B11;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 SB_CommandPacket = (SB_CommandPacket << 10) | (SB_BlueCommand & 1023);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60 SB_CommandPacket = (SB_CommandPacket << 10) | (SB_RedCommand & 1023);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 SB_CommandPacket = (SB_CommandPacket << 10) | (SB_GreenCommand & 1023);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 shiftOutLocal(datapin, clockpin, SB_CommandPacket >> 24);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 shiftOutLocal(datapin, clockpin, SB_CommandPacket >> 16);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 shiftOutLocal(datapin, clockpin, SB_CommandPacket >> 8);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 shiftOutLocal(datapin, clockpin, SB_CommandPacket);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 void latch() {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 delayMicroseconds(100);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 digitalWrite(latchpin,HIGH); // latch data into registers
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72 delayMicroseconds(100);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 digitalWrite(latchpin,LOW);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 void refresh() {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 /* send all pixels */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 SB_CommandMode = B00;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78 for (int pixel=0; pixel < currentChans; pixel++) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 SB_RedCommand = vals[pixel * 3 + 0];
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 SB_GreenCommand = vals[pixel * 3 + 1];
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 SB_BlueCommand = vals[pixel * 3 + 2];
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 SB_SendPacket();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84 latch();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 #define F 1023
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87 #define PIXEL(i, r, g, b) { vals[i*3+0] = r; vals[i*3+1] = g; vals[i*3+2] = b; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89 void setCurrent(unsigned char r, unsigned char g, unsigned char b) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90 /* 127 = max */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 SB_CommandMode = B01; // Write to current control registers
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 SB_RedCommand = r;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93 SB_GreenCommand = g;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 SB_BlueCommand = b;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 SB_SendPacket();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96 latch();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 void setup() {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 pinMode(datapin, OUTPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 pinMode(latchpin, OUTPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 pinMode(enablepin, OUTPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102 pinMode(clockpin, OUTPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 digitalWrite(latchpin, LOW);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105 digitalWrite(enablepin, LOW);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107 for (int i=0; i < MAXCHANS; i++) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 setCurrent(127, 127, 127);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 PIXEL(0, F, 0, 0);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 PIXEL(1, 0, F, 0);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 PIXEL(2, 0, 0, F);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 PIXEL(3, F, F, 0);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 PIXEL(4, 0, F, F);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116 refresh();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 #if TEMP_ENABLED
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119 sensors.begin();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 sensors.getAddress(tempSensorAddress, 0);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 sensors.setResolution(tempSensorAddress, 12);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122 #endif
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124 Serial.begin(9600);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 Serial.flush();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127 pinMode(5, INPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128 pinMode(6, INPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129 pinMode(7, INPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 pinMode(8, INPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131 pinMode(9, INPUT);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
132 digitalWrite(6, HIGH);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133 digitalWrite(8, HIGH);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134 digitalWrite(9, HIGH);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137 barcode.begin(1200);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 digitalWrite(2, 0); // inverse logic: don't hold this high
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140 /*
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 barcode.write("\x1b\x42\x0d"); // blink
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
143 /*
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144 barcode.write("\x1b\x46\x0d"); // off
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
145 */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
146 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
147
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
148 void loop() {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
149 /*
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
150 send 0xff,
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
151 then a byte for the number of channels you're going to send,
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
152 then nchans*3 bytes of r-g-b levels from 0x00-0xfe.
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
153
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
154 second byte 0xfe means to return temp in F, followed by \n
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
155 second byte 0xfd means to return a line describing the state of buttons
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
156 second byte 0xfc means to beep the barcode scanner
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
157 second byte 0xfb means to fetch any recent scanned barcode
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
158 */
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
159
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
160 unsigned char curPos = (digitalRead(8) << 1) | digitalRead(9);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
161
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
162 if (curPos == 0 && lastRotPosition == 2) { rotation--; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
163 if (curPos == 0 && lastRotPosition == 1) { rotation++; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
164 if (curPos == 1 && lastRotPosition == 0) { rotation--; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
165 if (curPos == 1 && lastRotPosition == 3) { rotation++; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
166 if (curPos == 3 && lastRotPosition == 1) { rotation--; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
167 if (curPos == 3 && lastRotPosition == 2) { rotation++; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
168 if (curPos == 2 && lastRotPosition == 3) { rotation--; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
169 if (curPos == 2 && lastRotPosition == 0) { rotation++; }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
170
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
171 lastRotPosition = curPos;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
172
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
173 int inb = Serial.read();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
174 if (inb == -1) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
175 return;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
176 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
177 if (inb == 0xff) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
178 addr = -1;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
179 return;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
180 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
181 if (addr == -1) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
182 if (inb == 0xfe) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
183 #if TEMP_ENABLED
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
184 sensors.requestTemperatures();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
185 float tempF = sensors.getTempF(tempSensorAddress);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186 Serial.print(tempF);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
187 Serial.print("\n");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
188 #endif
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189 addr = -1;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 return;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
191 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
192 if (inb == 0xfb) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
193 if (barcode.available() < 1) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
194 Serial.print("{\"barcode\":\"\"}\n");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
195 } else {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
196 Serial.print("{\"barcode\":\"");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
197 char last=1;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
198 while (barcode.available() > 0) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
199 last = barcode.read();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
200 Serial.print((int)last);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
201 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
202 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
203 Serial.print("\"}\n");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
204 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
205 return;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
206 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
207 if (inb == 0xfc) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
208 barcode.write("\x1b\x54\x0d");// beep
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
209 barcode.write("\x1b\x3f\x0d"); // requisition
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
210 Serial.print("{\"ok\":1}\n");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
211 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
212
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
213 if (inb == 0xfd) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
214 // read ariremote buttons, where some buttons are combined on
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
215 // the same pins
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
216 digitalWrite(5, HIGH); Serial.print(digitalRead(5));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
217 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
218 digitalWrite(5, LOW); Serial.print(!digitalRead(5));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
219 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
220 digitalWrite(7, HIGH); Serial.print(digitalRead(7));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
221 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
222 digitalWrite(7, LOW); Serial.print(!digitalRead(7));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
223 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
224 Serial.print(!digitalRead(6));
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
225 Serial.print(" ");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
226 Serial.print((int)rotation);
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
227 Serial.print("\n");
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
228 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
229 currentChans = inb;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
230 addr = 0;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
231 return;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
232 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
233
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
234 vals[addr] = inb * 4; // SB levels are 10-bit. log scale might be better
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
235 addr ++;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
236 if (addr >= currentChans * 3) {
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
237 refresh();
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
238 addr = 0;
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
239 }
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
240
a422d875d94d barcode support on star. triggers mpd song
drewp <drewp@bigasterisk.com>
parents:
diff changeset
241 }