Niby coś tam już ogarnąłem, lecz zastanawiam mnie jedna rzecz.
Chciałem odpalić tylko jeden segment(ten jeden świeci się prawidłowo) na jednym COM'ie lecz na innych COM'ach również on się zapala, w sensie jest wyszarzony ( bardzo go lekko widać, pod kątem coraz bardziej..) Jak to ogarnąć? Źle napisałem kod ? Może za szybko ?
Do Comów zastosowałem 3 stany. OFF, ON/OFF i ON tak jak gość w tutorialu. (W sumie sam nie wiem) Sprawdziłem też które COMY odpalają które segmenty( załączniki )(bardzo dziwne ułożone są).
Tak swoją droga, pomoże mi taki Analizator stanów logicznych zobaczyć jak są podane sygnały do mojej wagi?
Kod:
#define COM1 16
#define COM1_R 4
#define COM2 17
#define COM2_R 22
#define COM3 18
#define COM3_R 21
#define COM4 19
#define COM4_R 2
#define TIME 150
#define S1 23
#define S2 5
#define S3 13
unsigned long miganieLED1 = 5000;
unsigned long miganieLED2 = 2000;
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzasLED1 = 0;
unsigned long zapamietanyCzasLED2 = 0;
int stanLED1 = LOW;
int stanLED2 = LOW;
void setup() {
// initialize digital pin GPIO18 as an output.
pinMode(COM1, OUTPUT);
pinMode(COM1_R, OUTPUT);
pinMode(COM2, OUTPUT);
pinMode(COM2_R, OUTPUT);
pinMode(COM3, OUTPUT);
pinMode(COM3_R, OUTPUT);
pinMode(COM4, OUTPUT);
pinMode(COM4_R, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(15, OUTPUT);
pinMode(14, OUTPUT);
pinMode(12, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
pinMode(33, OUTPUT);
pinMode(25, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(32, OUTPUT);
pinMode(S2, OUTPUT);
digitalWrite(S3, LOW); //s1
digitalWrite(15, LOW); //s1
digitalWrite(14, LOW); //s1
digitalWrite(12, LOW); //s1
digitalWrite(26, LOW); //s1
digitalWrite(27, LOW); //s1
digitalWrite(33, LOW); //s1
digitalWrite(25, LOW); //s1
digitalWrite(S1, LOW); //s1
digitalWrite(32, LOW); //s1
digitalWrite(S2, LOW); //s1
digitalWrite(COM1, HIGH); //com 1
digitalWrite(COM2, HIGH); //com 1
digitalWrite(COM3, HIGH); //com 1
digitalWrite(COM4, HIGH); //com 1
digitalWrite(COM1_R, LOW); //com 1
digitalWrite(COM2_R, LOW); //com 1
digitalWrite(COM3_R, LOW); //com 1
digitalWrite(COM4_R, LOW); //com 1
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(COM4, HIGH); // COM 4 ON/OFF
digitalWrite(COM4_R, LOW);
digitalWrite(COM1, LOW); // COM 1 OFF
digitalWrite(COM1_R, LOW);
digitalWrite(S2, HIGH);
delayMicroseconds(TIME);
digitalWrite(S2, LOW);
digitalWrite(COM1, HIGH); // COM 1 ON
digitalWrite(COM1_R, HIGH);
delayMicroseconds(TIME);
digitalWrite(S2, LOW);
digitalWrite(COM1, HIGH); // COM 1 ON/OFF
digitalWrite(COM1_R, LOW);
digitalWrite(COM2, LOW); // COM 2 OFF
digitalWrite(COM2_R, LOW);
delayMicroseconds(TIME);
digitalWrite(COM2, HIGH); // COM 2 ON
digitalWrite(COM2_R, HIGH);
delayMicroseconds(TIME);
digitalWrite(COM2, HIGH); // COM 2 ON/OFF
digitalWrite(COM2_R, LOW);
digitalWrite(COM3, LOW); // COM 3 OFF
digitalWrite(COM3_R, LOW);
delayMicroseconds(TIME);
digitalWrite(COM3, HIGH); // COM 3 ON
digitalWrite(COM3_R, HIGH);
delayMicroseconds(TIME);
digitalWrite(COM3, HIGH); // COM 3 ON/OFF
digitalWrite(COM3_R, LOW);
digitalWrite(COM4, LOW); // COM 4 OFF
digitalWrite(COM4_R, LOW);
delayMicroseconds(TIME);
digitalWrite(COM4, HIGH); // COM 4 ON
digitalWrite(COM4_R, HIGH);
delayMicroseconds(TIME);
/*
digitalWrite(COM0, HIGH);
digitalWrite(COM1, LOW);
digitalWrite(COM2, LOW);
digitalWrite(COM3, LOW);
digitalWrite(S1, LOW); //s1
digitalWrite(S2, LOW); //s1
digitalWrite(S3, HIGH); //s1
delay(3);
digitalWrite(S1, HIGH); //s1
digitalWrite(S2, HIGH); //s1
digitalWrite(S3, HIGH); //s1
allComOff();
delay(1);
digitalWrite(COM0, LOW);
digitalWrite(COM1, HIGH);
digitalWrite(COM2, LOW);
digitalWrite(COM3, LOW);
digitalWrite(S1, LOW); //s1
digitalWrite(S2, LOW); //s1
digitalWrite(S3, HIGH); //s1
delay(3);
digitalWrite(S1, HIGH); //s1
digitalWrite(S2, HIGH); //s1
digitalWrite(S3, HIGH); //s1
allComOff();
delay(1);
digitalWrite(COM0, LOW);
digitalWrite(COM1, LOW);
digitalWrite(COM2, HIGH);
digitalWrite(COM3, LOW);
digitalWrite(S1, LOW); //s1
digitalWrite(S2, LOW); //s1
digitalWrite(S3, HIGH); //s1
delay(3);
allComOff();
digitalWrite(S1, LOW); //s1
digitalWrite(S2, LOW); //s2
digitalWrite(S3, HIGH); //s2
delay(1);
digitalWrite(COM0, LOW);
digitalWrite(COM1, LOW);
digitalWrite(COM2, LOW);
digitalWrite(COM3, HIGH);
digitalWrite(S1, HIGH); //s1
digitalWrite(S2, HIGH); //s2
digitalWrite(S3, HIGH); //s2
delay(3);
digitalWrite(S1, LOW); //s1
digitalWrite(S2, LOW); //s2 <---
digitalWrite(S3, HIGH); //s2 <---
allComOff();
delay(3);
*/
}
void allComOff()
{
digitalWrite(COM1, LOW);
digitalWrite(COM2, LOW);
digitalWrite(COM3, LOW);
digitalWrite(COM4, LOW);
}
void allon() {
digitalWrite(13, HIGH); //s1
digitalWrite(15, HIGH); //s1
digitalWrite(14, HIGH); //s1
digitalWrite(12, HIGH); //s1
digitalWrite(26, HIGH); //s1
digitalWrite(27, HIGH); //s1
digitalWrite(33, HIGH); //s1
digitalWrite(25, HIGH); //s1
digitalWrite(32, HIGH); //s1
}
void alloff() {
digitalWrite(13, LOW); //s1
digitalWrite(15, LOW); //s1
digitalWrite(14, LOW); //s1
digitalWrite(12, LOW); //s1
digitalWrite(26, LOW); //s1
digitalWrite(27, LOW); //s1
digitalWrite(33, LOW); //s1
digitalWrite(25, LOW); //s1
digitalWrite(32, LOW); //s1
}