Added main code
This commit is contained in:
parent
a3a20c98cd
commit
369ecd14db
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@ flush
|
|||||||
new
|
new
|
||||||
prompt
|
prompt
|
||||||
sr
|
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