Mercurial > code > home > repos > homeauto
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 |
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 } |