1
2
3
4
5int latch=10;
6int clockPin=11;
7int dataPin=12;
8int OE=9;
9
10
11char buffer[11];
12
13void setup() {
14
15
16
17 pinMode(latch,OUTPUT);
18 pinMode(clockPin,OUTPUT);
19 pinMode(dataPin,OUTPUT);
20 pinMode(OE,OUTPUT);
21
22
23 Serial.begin(9600);
24}
25
26void loop() {
27
28
29 if (Serial.available() > 0) {
30 int index=0;
31 delay(100);
32 int numChar = Serial.available();
33 if (numChar>11) {
34 numChar=11;
35 }
36 while (numChar--) {
37 buffer[index++] = Serial.read();
38 }
39 splitString(buffer);
40 }
41}
42
43void splitString(char* data){
44 Serial.print("Data entered: ");
45 Serial.println(data);
46 char* parameter;
47 parameter = strtok (data, " ,");
48 while (parameter != NULL) {
49 setLED(parameter);
50 parameter = strtok (NULL, " ,");
51 }
52
53
54 for (int x=0; x<11; x++) {
55 buffer[x]='\\0';
56 }
57 }
58 void setLED(char* data) {
59 Serial.println(data);
60 if ((data[0] == 'b') || (data[0] == 'B')) {
61 int Ans = strtol(data+1, NULL, 10);
62 Ans = constrain(Ans,0,255);
63 analogWrite(OE, 255-Ans);
64 Serial.print("Brightness is set to: ");
65 Serial.println(Ans);
66 }
67 else{
68 int num = strtol(data, NULL, 10);
69 num = constrain(Ans,0,255);
70 digitalWrite(latch, LOW);
71 shiftOut(dataPin, clockPin, LSBFIRST, num);
72 digitalWrite(latch, HIGH);
73 Serial.print("number is set to: ");
74 Serial.println(num);
75 }
76 }
77