Пытаюсь сделать простую схему с ШИМ

Тема в разделе "Arduino & Shields", создана пользователем Дмитрий"Н", 7 дек 2018.

  1. Приветствую всех кто зашел на эту страничку, управляю уровнем света светодиода, вроде по схеме и коду всё логично, но не работает, значит где-то ошибка. А вот собственно сама схема, код и монитор.
    upload_2018-12-7_21-59-10.png
    1 /*проверка работы ардуино с кнопок*/

    2 int bu=2; //PIN кнопки увеличения яркости LED "button up"
    3 int bd=4; //PIN кнопки уменьшения яркости LED "button down"
    4 int bo=6; //PIN кнопкивыключенияLED "button off"
    5 int p; // переменная
    6 int L=10; //PIN ШИМ LED

    7 void setup(){

    8 Serial.begin(9600);

    9 pinMode(L,OUTPUT); //выход ШИМ LED
    10 pinMode(bu,INPUT); //вход"button up"
    11 pinMode(bd,INPUT); //вход"button down"
    12 pinMode(bo,INPUT);} //вход"button off"

    13 void loop() {

    14 if(digitalRead(bu)=HIGH) //если на PIN "button up" приходитHIGH
    15 {p+=10;} // прибавляемno 10 до 254

    16 "Serial.print("+");
    17 Serial.print(p);
    18 Serial.print("\t\t");

    19 if (digitalRead (bd)=HIGH) //еслинаPIN "button down" приходитHIGH
    20 {p-=10;} // убавляем no 10 до 0

    21 "Serial.print("-");
    22 Serial.print(p);
    23 Serial.print("\t\t");

    24 if(digitalRead(bo)=HIGH) //если на PIN "button off" приходитHIGH
    25 {p=0;} //обнуляем

    26 Serial.print("0");
    27 Serial.println(p);
    anaiogWrite(L,constrain(p,0,254)); //PIN ШИМ LED выдает "int p" от 0 до 5 В
    29 delay(100);} // поглотим все дребезги

    /* нопки подключены с подтягивающими резисторами на 100 кОм, LEDс резистором 220 Ом */


    upload_2018-12-7_21-59-22.png
     
  2. Вы уверены, что у вас кнопки правильно стоят в симуляторе? Не очень хорошо учиться схемотехнике на нечитаемых картинках.
     
    parovoZZ нравится это.
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Резисторы вверху 3 шт. Сдвиньте их влево на 2 клетки. НООООООО !!!
    Поставьте резисторы 100 ом вместо проводков от плюса к кнопкам. Не поставите - пеняйте на себя в случае чего. Я предупредил. Хотя может уже поздно.
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @Дмитрий"Н", отредактируйте сообщение, вставив код через кнопку "Код", у вас код в сообщении не соответствует коду на картинке (потерялось = в проверках)
     
    NikitOS нравится это.
  5. Переставил для удобства чтения, переадресовал код но ошибок так и не нашёл... кнопки не реагируют в симуляторе и на действующей схеме.
    upload_2018-12-8_0-48-15.png
    Код (C++):
    /*проверка работы ардуино с кнопок*/
        int bu=2; //PIN кнопки увеличения яркости LED "button up"
        int bd=4; //PIN кнопки уменьшения яркости LED "button down"
        int bo=7; //PIN кнопки выключения LED "button off"
        int p;    // переменная
        int L=11; //PIN ШИМ LED
    void setup(){
        Serial.begin(9600);
        pinMode(L,OUTPUT); //выход ШИМ LED
        pinMode(bu,INPUT); //вход "button up"
        pinMode(bd,INPUT); //вход "button down"
        pinMode(bo,INPUT);}//вход "button off"
    void loop() {
        if(digitalRead(bu)==HIGH)//если на PIN "button up" приходит HIGH
        {p+=10;}// прибавляем no 10 до 254
        Serial.print("+");
        Serial.print(p);
        Serial.print("\t\t");
        if (digitalRead (bd)==HIGH)//если на PIN "button down" приходит HIGH
        {p-=10;}// убавляем no 10 до 0
        Serial.print("-");
        Serial.print(p);
        Serial.print("\t\t");
        if(digitalRead(bo)==HIGH)//если на PIN "button off" приходит HIGH
        {p=0;}//обнуляем
        Serial.print("0");
        Serial.println(p);
        analogWrite(L,constrain(p,0,254));//PIN ШИМ LED выдает "int p" от 0 до 5 В
        delay(100);}// пстлатим все дребезти
        /* нопки подключены с подтягивающими резисторами на 100 кОм, LED с резистором 220 Ом */
     
    В "жизни" "int p" плавает
    upload_2018-12-8_1-6-23.png
     

  6. 100 кОм - сопротивление для оттяжки, так что с Ардуино всё хорошо.
     
  7. Спасибо, сразу не оценил данную функцию, теперь буду ей пользоваться.
     
  8. parovoZZ

    parovoZZ Гуру

    для чаво???
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну типа постаааааааааавил - оотттттттттянууууууууулся по полной.
    Кайфецццц.
    Они нужны чтоб вход микры не висел в воздухе, пока кнопарь не нажат. А они у вас просто источник питания коротят. К тому же 100 ком - перебор. Поставьте 10ком. Делать подтяжку на минус - моветон. Сделайте на плюс, а кнопари пусть контачат на минус. В программе поменяйте уровни.
     
    Последнее редактирование: 8 дек 2018
    Дмитрий"Н" нравится это.
  10. ZAZ-965

    ZAZ-965 Гуру

    @Дмитрий"Н", по моему вы неправильно подключили кнопку. У вас они постоянно замкнуты и на всех входах HIGH (судя по картинке из гугла). Проверьте простой схемой "плюс - кнопка - резистор - светодиод - земля"
     

    Вложения:

    • cad.jpg
      cad.jpg
      Размер файла:
      15,3 КБ
      Просмотров:
      488
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Он че умудрился кнопари "лыжами" горизонтально воткнуть ? Там так вроде невозможно...
     
  12. parovoZZ

    parovoZZ Гуру

    пофигу на самом деле.
     
  13. А вот к стати 10 кОм и перекинуть на контакт ПИН INPUT оказалось решением int "р" не плавает, странно, я вроде так делал... и тогда не получалось.
    Теперь буду искать решение ошибки в коде,
    Код (C++):
    constrain(p,0,254)
    int "р" почему-то не находится в указанных пределах.
     
  14. Спасибо за помощь!
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    А где у вас в коде проверки выбега int p за пределы 0 и 255 ?
     
  16. Получилось
    Код (C++):
     p=constrain(p,0,254);//ограничение значения "int p"
       analogWrite(L,p);//PIN ШИМ LED выдает "int р" от 0 до 5 В
    Переопределил "int р", вынеся эту функцию отдельно, Теперь даже завышенные значения кнопки не растут, а при отпускании кнопки значение возвращается к определенному в данной функции.
    Всё, теперь можно попробовать подключать нагрузку через mosfet.
     
  17. Вы, конечно, извините, но вы только сегодня с кнопкой разобрались. Вам надо учиться несколько месяцев, прежде чем браться за такие сложные вещи.
     
    parovoZZ нравится это.
  18. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Если не браться - вообще ничему не научишься. Аппетит приходит во время еды, как говорят.
     
  19. Никто и не сказал не браться. Было сказано "рано". Сначала нужно освоить пассивные элементы, потом диоды, потом биполярники, а потом уже полевики.
     
    parovoZZ нравится это.
  20. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Такое отобьет последнее желание учиться. У Пушкина был герой - Сальери.- антипод Моцарта. Рассуждал в вашем ключе. К слову. Без обид.
    Может поэтому у нас наука и загнулась, когда ушли в лучший мир последние ученые и инженеры с дореволюционным образованием вроде Королёва.
     
    Последнее редактирование: 8 дек 2018