|
|
本帖最后由 Harrychou 于 2013-7-14 00:15 编辑
目前想用可變電阻調整LED排燈的亮燈數量,搭配上74HC595來用
但LED排燈的亮燈數量沒辦法如預期的一樣增減數量,反而會亂跑
例如可變電阻調到某刻度時,反而會變成跑馬燈,不然就是全暗或全亮
翻了書本和網頁,找不出問題點
底下是目前寫的程式,想問看看問題出在哪邊
- //74HC595腳位
- const byte dataPin=2;
- const byte latchPin=3;
- const byte clockPin=4;
- //可變電阻輸入腳位
- const byte potPin=A1;
- int val;
- byte oil;
- //LED燈開關陣列
- byte LEDs[9]={
- B00000000,
- B00000001,
- B00000011,
- B00000111,
- B00001111,
- B00011111,
- B00111111,
- B01111111,
- B11111111};
- void setup(){
- pinMode(dataPin,OUTPUT);
- pinMode(latchPin,OUTPUT);
- pinMode(clockPin,OUTPUT);
- Serial.begin(9600);
- }
- void loop(){
- //可變電阻輸入值,分成10等分
- val=analogRead(potPin);
- if(val<=1023 && val>=922){
- oil=9;}
- else if(val<=921 && val>=819){
- oil=8;}
- else if(val<=818 && val>=717){
- oil=7;}
- else if(val<=716 && val>=614){
- oil=6;}
- else if(val<=613 && val>=512){
- oil=5;}
- else if(val<=511 && val>=410){
- oil=4;}
- else if(val<=409 && val>=307){
- oil=3;}
- else if(val<=306 && val>=205){
- oil=2;}
- else if(val<=204 && val>=102){
- oil=1;}
- else{
- oil=0;}
- delay(250);
- //74HC595輸出
- digitalWrite(latchPin,LOW);
- shiftOut(dataPin,clockPin,MSBFIRST,LEDs[oil]);
- digitalWrite(latchPin,HIGH);
- Serial.println(oil);
- }
复制代码 |
|