2016-07-12 3 views
0

Это код, который я имею в Arduino:светодиоды не загораются с Arduino

int blue1 = 1; 
int blue2 = 2; 
int blue3 = 3; 
int blue4 = 4; 

int yell1 = 5; 
int yell2 = 6; 
int yell3 = 7; 
int yell4 = 8; 

int red1 = 9; 
int red2 = 10; 
int red3 = 11; 
int red4 = 12; 

int knob = A0; 

void setup() { 
    pinMode(blue1,OUTPUT); 
    pinMode(blue2,OUTPUT); 
    pinMode(blue3,OUTPUT); 
    pinMode(blue4,OUTPUT); 

    pinMode(yell1,OUTPUT); 
    pinMode(yell2,OUTPUT); 
    pinMode(yell3,OUTPUT); 
    pinMode(yell4,OUTPUT); 

    pinMode(red1,OUTPUT); 
    pinMode(red2,OUTPUT); 
    pinMode(red3,OUTPUT); 
    pinMode(red4,OUTPUT); 

    pinMode(13,OUTPUT); 

    pinMode(knob,INPUT); //Value from potentiometer 

    Serial.begin(9600); 
} 

void loop() { 

    delay(250); 

    digitalWrite(13,HIGH); 
    delay(250); 
    digitalWrite(13,LOW); 

    int number = analogRead(knob); //'number' is return from potentiometer 
    Serial.println(number); 

    digitalWrite(blue1,HIGH); 

    if(number > 85) { 
    digitalWrite(blue1,HIGH); 
    } 
    if(number > 170) { 
    digitalWrite(blue2,HIGH); 
    } 
    if(number > 255) { 
    digitalWrite(blue3,HIGH); 
    } 
    if(number > 340) { 
    digitalWrite(blue4,HIGH); 
    } 
    if(number > 425) { 
    digitalWrite(yell1,HIGH); 
    } 
    if(number > 510) { 
    digitalWrite(yell2,HIGH); 
    } 
    if(number > 595) { 
    digitalWrite(yell3,HIGH); 
    } 
    if(number > 680) { 
    digitalWrite(yell4,HIGH); 
    } 
    if(number > 765) { 
    digitalWrite(red1,HIGH); 
    } 
    if(number > 850) { 
    digitalWrite(red2,HIGH); 
    } 
    if(number > 935) { 
    digitalWrite(red3,HIGH); 
    } 
    if(number == 1023) { 
    digitalWrite(red4,HIGH); 
    }      
} 

Цель состоит в том, чтобы иметь полосу светодиодов, которая загорается, и чем выше значение, возвращаемое от потенциометра, тем больше загорается светодиод. Я знаю, что потенциометр работает нормально, потому что он печатает значения в окне Serial. И я почти уверен, что у меня есть проводка прямо на макете. Поэтому в основном я здесь, чтобы проверить, что CODE в порядке. Я не могу получить хорошую картину макета (и даже не знаю, как отправить его, если можно). Поэтому, если вы обнаружите какие-либо проблемы с кодом, сообщите мне (и как их исправить). но если вы этого не сделаете, я узнаю, что проблема связана с самой матерью или с тем, как я связан с вещами. Заранее спасибо!

ответ

1

Я вижу две основные проблемы с кодом:

  1. Вы используете Serial, хотя вы резервируют булавку1 для полосы водить. Вы не можете иметь оба пути: либо вы используете булавку для последовательного интерфейса(который, по умолчанию, использует контакты 0 и 1), или использовать булавку для привела. Попытка сделать что-то может повредить ваш компонент и/или ваше устройство. Таким образом, вы должны удалить весь код, относящийся к интерфейсу Serial.

  2. Вы не установлены штырьковый в LOW состояние, а это значит, что если число равно 1023 в одной петле, после этого момента каждый штырь будет на HIGH навсегда. Вы должны установить каждый контакт обратно на LOW либо в начале цикла, либо путем добавления ветки еще для каждого условия if.

Кроме этого, так как вы используете так много булавки, то я бы посоветовал вам, чтобы проверить, что ток, потребляемый вашим устройством, не превышает Arduino «s current limitations, как вы могли бы повредить плату.