Added main code
This commit is contained in:
parent
a3a20c98cd
commit
369ecd14db
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@ flush
|
||||
new
|
||||
prompt
|
||||
sr
|
||||
main
|
||||
|
78
main.c
Normal file
78
main.c
Normal file
@ -0,0 +1,78 @@
|
||||
#include <wiringPi.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#define LATCH_PIN 2
|
||||
#define CLOCK_PIN 0
|
||||
#define DATA_PIN 3
|
||||
#define OFF false, false, false
|
||||
#define RED true, false, false
|
||||
#define GREEN false, true, false
|
||||
#define BLUE false, false, true
|
||||
#define PURPLE true, false, true
|
||||
typedef enum { LEFT, RIGHT } Side_t;
|
||||
bool colorField[] = {
|
||||
false, // Left red
|
||||
false, // Left green
|
||||
false, // Left blue
|
||||
false, // Right red
|
||||
false, // Right green
|
||||
false, // Right blue
|
||||
false, // Unused bit
|
||||
false // Unused bit
|
||||
};
|
||||
void write(bool mode) {
|
||||
delay(10);
|
||||
digitalWrite(DATA_PIN, mode);
|
||||
digitalWrite(CLOCK_PIN, true);
|
||||
digitalWrite(CLOCK_PIN, false);
|
||||
digitalWrite(DATA_PIN, false);
|
||||
}
|
||||
void flushPins() {
|
||||
digitalWrite(LATCH_PIN, true);
|
||||
digitalWrite(LATCH_PIN, false);
|
||||
}
|
||||
void updateColors() {
|
||||
flushPins();
|
||||
for(int i = 0; i < 8; i ++){
|
||||
write(colorField[i]);
|
||||
}
|
||||
flushPins();
|
||||
}
|
||||
void changeColor(Side_t side, bool red, bool green, bool blue) {
|
||||
short shift = 0;
|
||||
if(side == RIGHT) {
|
||||
shift = 3;
|
||||
}
|
||||
colorField[shift] = red;
|
||||
colorField[shift + 1] = green;
|
||||
colorField[shift + 2] = blue;
|
||||
updateColors();
|
||||
delay(1000);
|
||||
}
|
||||
void changeAllColors(bool red, bool green, bool blue) {
|
||||
colorField[0] = red;
|
||||
colorField[1] = green;
|
||||
colorField[2] = blue;
|
||||
colorField[3] = red;
|
||||
colorField[4] = green;
|
||||
colorField[5] = blue;
|
||||
}
|
||||
int main(void) {
|
||||
wiringPiSetup();
|
||||
pinMode(DATA_PIN, OUTPUT);
|
||||
pinMode(CLOCK_PIN, OUTPUT);
|
||||
pinMode(LATCH_PIN, OUTPUT);
|
||||
changeAllColors(OFF);
|
||||
updateColors();
|
||||
delay(1000);
|
||||
for(;;) {
|
||||
changeColor(LEFT, RED);
|
||||
changeColor(LEFT, OFF);
|
||||
changeColor(LEFT, GREEN);
|
||||
changeColor(LEFT, OFF);
|
||||
changeColor(LEFT, BLUE);
|
||||
changeColor(LEFT, OFF);
|
||||
changeColor(LEFT, PURPLE);
|
||||
changeColor(LEFT, OFF);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user