#include <Adafruit_NeoPixel.h>
#include <Timers.h>
int j =0;
int d =0; // Koniec projektu 02,01,2017R.
int r = 0;
int w = 0;
int q =0;
#define PINLED1 8
#define PINLED2 7
const int ZP = 11;
const int KL = 12;
const int KP = 13;
int a = 2;
const int prog1 = A2;
const int prog2 = A3;
#define CCC strip.Color(255, 79, 1) // Kolor kierunku << 255 125 12
#define BBB strip1.Color(255, 79, 1) // Kolor kierunku << 255 125 12
int KLewy = 0;
int KPrawy = 0;
int ZAP = 0;
Timers <2> przerw;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PINLED1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(6, PINLED2, NEO_GRB + NEO_KHZ800);
void setup() {
// put your setup code here, to run once:
przerw.attach(1, 121, czas);
przerw.attach(2, 3106, odczyt);
strip.begin();
strip1.begin();
pinMode(KL, INPUT);
pinMode(KP, INPUT);
pinMode(ZP, INPUT);
pinMode(prog1, INPUT_PULLUP);
pinMode(prog2, INPUT_PULLUP);
// Random test LED
long R,G,B;
for (int n = 0; n < 6; n++){
R = random(380); G = random(300); B = random(300);
strip.setPixelColor(n, strip.Color(R, G, B));
strip1.setPixelColor(n, strip1.Color(R, G, B));
strip.show();strip1.show();
}
delay(2500);
strip.clear();strip1.clear();
strip.show();strip1.show();
}
void loop() {
przerw.process();
}
void odczyt() {
if (digitalRead(prog1)==0 && digitalRead(prog2)== 0){
a=2;}
else if(digitalRead(prog1)==1 && digitalRead(prog2)== 0){
a=1; } //flow led + Amber
else if (digitalRead(prog1)==0 && digitalRead(prog2)== 1){
a=0;}//flow led
else if (digitalRead(prog1)==1 && digitalRead(prog2)== 1){
a=3;}
}
void czas() { // flow led
KLewy = digitalRead(KL);
KPrawy = digitalRead(KP);
ZAP = digitalRead(ZP);
if (a == 0){
if (KLewy == 1 && KPrawy == 0) {
Serial.println(j);
if (j <=6){
strip.setPixelColor(j, CCC);
strip.show();
j = j+1;
}
else if (j > 6 ){
j = 0;
strip.clear();
strip.show();
delay(700);
}
}
/* if (KLewy == 1) {
strip.clear();
strip.show();
j= 0;
}*/
if (KPrawy == 1 && KLewy == 0) {
if (d <=6){
strip1.setPixelColor(d, BBB);
strip1.show();
d = d+1;
}
else if (d > 6 ){
d = 0;
strip1.clear();
strip1.show();
delay(700);
}
}
/* if (KPrawy == 1) {
strip1.clear();
strip1.show();
d= 0;
}*/
if (KPrawy == 1 && KLewy == 1) {
if (r <=6){
strip1.setPixelColor(r, BBB);
strip.setPixelColor(r, CCC);
strip1.show();
strip.show();
r = r+1;
}
else if (r > 6 ){
r = 0;
strip1.clear();
strip.clear();
strip.show();
strip1.show();
delay(700);
}
}
if (KPrawy == 0 && KLewy == 0) {
strip1.clear();
strip1.show();
strip.clear();
strip.show();
r=0;
d=0;
j=0;
}
}
else if (a == 1) { // flow led + Amber
if (KLewy == 1 && KPrawy ==0) {
if (j <=6){
strip.setPixelColor(j, CCC);
strip.show();
j = j+1;
}
else if (j > 6 ){
j = 0;
if (ZAP == 1){
for (int n = 0; n < 6; n++){
strip.setPixelColor(n, strip.Color(20, 3, 0));
}}
else if (ZAP==0) strip.clear();
strip.show();
delay(700);
}
}
if (KPrawy == 1 && KLewy == 0) {
if (w <=6){
strip1.setPixelColor(w, BBB);
strip1.show();
w = w+1;
}
else if (w > 6 ){
w = 0;
if (ZAP==1){
for (int v = 0; v < 6; v++){
strip1.setPixelColor(v, strip1.Color(20, 3, 0));
}
strip1.show();}
else if (ZAP==0) {
strip1.clear();
strip1.show();
}
delay(700);
}
}
if (KPrawy == 1 && KLewy == 1) {
if (q <=6){
strip1.setPixelColor(q, BBB);
strip1.show();
strip.setPixelColor(q, CCC);
strip.show();
q = q+1;
}
else if (q > 6 ){
q = 0;
if (ZAP == 1){
for (int v = 0; v < 6; v++){
strip1.setPixelColor(v, strip1.Color(20, 3, 0));
strip1.show();
strip.setPixelColor(v, strip.Color(20, 3, 0));
strip.show();
}}
else if (ZAP == 0)
{ strip1.clear();
strip.clear();
strip1.show();
strip.show();
}
delay(700);
}}
if (KPrawy == 0 && KLewy == 0 && ZAP == 1) {
for (int s = 0; s < 6; s++){
strip1.setPixelColor(s, strip1.Color(20, 3, 0));
strip.setPixelColor(s, strip.Color(20, 3, 0));
}
strip1.show();
strip.show();
w= 0;
j=0;
q=0;
}
if (KPrawy == 0 && KLewy == 0 && ZAP == 0) {
strip1.clear();
strip.clear();
strip1.show();
strip.show();
w= 0;
j=0;
q=0;
}
}
else if (a == 2){ // Ori
if (KLewy == 1 && KPrawy == 0) {
for (int n= 0; n<= 6; n++ ){
strip.setPixelColor(n, CCC);
strip.show();
}
Serial.print("Clear");
delay(700);
strip.clear();
strip.show();
delay(600);
}
else if (KLewy == 0 && KPrawy == 1) {
for (int m= 0; m<= 6; m++ ){
strip1.setPixelColor(m, BBB);
strip1.show();
}
delay(700);
strip1.clear();
strip1.show();
delay(600);
}
else if (KLewy == 1 && KPrawy == 1) {
for (int n= 0; n<= 6; n++ ){
strip.setPixelColor(n, CCC);
strip.show();
strip1.setPixelColor(n, BBB);
strip1.show();
}
delay(700);
strip.clear();
strip.show();
strip1.clear();
strip1.show();
delay(600);
}
else if (KLewy == 0 && KPrawy == 0) {
strip.clear();
strip.show();
strip1.clear();
strip1.show();
}
}
else if (a == 3){ // Ori kierunki + DRL
if (KLewy == 1 && KPrawy == 0) {
for (int n= 0; n<= 6; n++ ){
strip.setPixelColor(n, CCC);
strip.show();
}
Serial.print("Clear");
delay(700);
strip.clear();
strip.show();
delay(600);
}
else if (KLewy == 0 && KPrawy == 1) {
for (int m= 0; m<= 6; m++ ){
strip1.setPixelColor(m, BBB);
strip1.show();
}
delay(700);
strip1.clear();
strip1.show();
delay(600);
}
else if (KLewy == 1 && KPrawy == 1) {
for (int n= 0; n<= 6; n++ ){
strip.setPixelColor(n, CCC);
strip.show();
strip1.setPixelColor(n, BBB);
strip1.show();
}
delay(700);
strip.clear();
strip.show();
strip1.clear();
strip1.show();
delay(600);
}
else if (KLewy == 0 && KPrawy == 0 && ZAP == 1) {
delay(600);
for (int s = 0; s < 6; s++){
strip1.setPixelColor(s, strip1.Color(255, 245, 200));
strip.setPixelColor(s, strip.Color(255, 245, 200));
}
strip1.show();
strip.show();
}
else if (KLewy == 0 && KPrawy == 0 && ZAP == 0) {
strip.clear();
strip.show();
strip1.clear();
strip1.show();
}
}
}
Projekt fajny, ale gdzie jakieś schematy i kod do Arduino? Bez tego projekt jest bezwartościowy :(
dokładnie :)
dokładnie, przydałby się kod i schematy :)
Artykuł ciekawy, ale trochę brakuje kodu i jakiegoś schematu. Projekt i pomysł super.
Wrzucam Kod :
http://pastebin.com/HJWnDBW9
I schemat ale tylko w Eagle :)
Należy pamiętać, że niektóre piny z płytki nie są połączone z arduino!!! ponieważ zostały wykorzystane do poprowadzenia ścieżek
https://ufile.io/0f5d9
Znaj moje dobre serce ;) Dodałem kod i plik ze schematem bezpośrednio do artykułu ;)
Dziękuje :) Uczę się tutaj jeszcze :) ale myślę, że przy następnych artykułach już będzie bezproblemowo :)
Fajna sprawa, podoba mi się połączenie świateł DRL z kierunkowskazami. Zastanawiam się czy przepisy dopuszczają takie pływające kierunkowskazy, kiedyś widziałem takie w jakieś wypasionej furze – więc chyba tak. Osobiście nie znalazłem nic na ten temat w przepisach, więc to co nie jest zabronione , jest dozwolone…
Na drogach widuję od czasu do czasu auta z takimi kierunkowskazami. Jeżeli mnie pamięć nie myli, to w którymś modelu Audi są takie montowane.
Tak dopuszczają płynące jeżeli producent je wyprodukuje :) z homologacją :)
Możesz podać mi swojego maila?
Super projekt, sam niedawno myślałem nad zrobieniem kierunku pływającego. Ale brak schematu mocno utrudnia skopiowanie. Poza tym jesli projekt miałby wylądować w innych autach niz trabant to musiałby byc bardziej autonomiczny. Wiekszosc współczesnych aut i tych 10 -15letnich ma komputer sterujący światłami + monitorowanie żarówek + manetka najczęściej uniemożliwiająca podpięcie jak do zwykłych przełączników. Zeby to ominac, Twój projekt mógłby działać na zasadzie – dostaje napiecie to świecii(plywa), ale sam nie miga. Drl mógłby sie włączać po wykryciu napięcia np13,5V, wtedy zapalałby po uruchomieniu silnika a nie stacyjki. Arduino minipro jest na tyle tani ze mozna sobie pozwolić na kupno oddzielnego ukladu do kazdego kierunku, a tym samym gdyby dzialao gdy dostanie napięcie wyeliminujesz tym problem synchronizacji przodu i tylu jesli projekt wyladuje np tylko w przednich kierunkach. Poza tym wsadzając układu w kierunek nie trzeba bedzie ciagnąc kabli od płytki do kierunkow, co tez ułatwi montaż
Jeszcze raz gratuluje projektu i czekam na zamieszczenie schematu