Приветствую вас. читал в этом блоге урок о подключении семисегментника и немножко не могу рабобраться, а именно с битами чтоб зажечь индикатор. имеется массив для сдвигового регистра staticu int8_t pos[4]= {0xE3,0xE5,0xE9,0xF1}; каждый байт соответствует сегменту но почему то у меня все горит не правильно, сегментник такой же как в примере, провода проверил раз 40, практически все сегменты полностью засвечены и нечто похожее на цифры вылетает крайне редко. помогите разобраться. скетч с урока Код (C++): #include <SPI.h> enum { reg = 8 }; void setup() { SPI.begin(); pinMode(reg, OUTPUT); } int hour=0, minut=0, sec =0, secOne=0; int delayTime=7; static uint8_t digit[] = { (0b00111111), //0 (0b00000110), //1 (0b01011011), //2 (0b01001111), //3 (0b01100110), //4 (0b01101101), //5 (0b01111101), //6 (0b00000111), //7 (0b01111111), //8 (0b01101111) //9 }; static uint8_t pos[]= {0xE3,0xE5,0xE9,0xF1}; unsigned long timer=0, timerPrev=0, thinkingTime=1000; void output(){ digitalWrite(reg, LOW); SPI.transfer(digit[1]); //убрал переменные и воткнул везде цифры для наглядности SPI.transfer(pos[0]); digitalWrite(reg, HIGH); delay(3); digitalWrite(reg, LOW); SPI.transfer(digit[2]); SPI.transfer(pos[1]); digitalWrite(reg, HIGH); delay(3); digitalWrite(reg, LOW); SPI.transfer(digit[3]); SPI.transfer(pos[2]); digitalWrite(reg, HIGH); delay(3); digitalWrite(reg, LOW); SPI.transfer(digit[4]); SPI.transfer(pos[3]); digitalWrite(reg, HIGH); delay(3); } void loop() { timer=millis(); if (timer-timerPrev>999){ secOne+=1; if (secOne==10){ secOne=0; sec+=1; } if (sec==6){ secOne=0; minut+=1; } if (minut==10){ minut=0; hour+=1; } if(minut==6){ hour=0; } timerPrev=timer; } output(); }
Переменные верните, а вот отсюда код заработает ? http://nextable.ru/144-4-razryadnyy-7-segmentnyy-indikator-i-arduino.html , либо здесь посмотреть http://arduino.ru/forum/proekty/vyv...mentnyi-indikator-pri-pomoshchi-dvukh-74hc595
все таки нашел ошибку у себя, у меня общий катод, а в примере анод, массив для цифр я менял сразу на свой, а вот массив для каждого сегмента оставил из примера,знал что ошибка где то в нем, но долго до меня доходило