Семисигментный и кнопка

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем exclus, 7 янв 2013.

  1. exclus

    exclus Нуб

    Уважаемые форумчане! Приветствую вас.
    Я новичок в ардуино. Изучая вики и реализуя примеры, собрал пару семи сегментных индикаторов и запустил скетч с выводом времени после включения ардуины. Жаль пока разбирать схему и хотел опробовать еще пару интересных скетчей. Например, подсоединил кнопку к 8 пину. Помогите со скетчем. Логика простая нажатие на кнопку прибавляет единицу и выводит на индикаторы. Мне пока сложно с кодом нужно наглядно, что бы разбираться.


    P.S. Уважаемая Амперка сделайте больше примеров с использованием деталей которые у вас приобретают.
    Вот пока что имею
     
  2. PHP:

    /* Не используйте этот код! Он не реагирует на нажатия кнопки.
    HIGH == 1, buttonPin == 8
    1 !== 8
    Следовательно условие "if" в loop`е никогда не будет выполнено,
    независимо от состояния кнопки.
    */

    int clock_pin = 2; // тактовая частота
    int reset_pin = 3; // сброс счетчика
    int buttonPin = 8; // кнопка
    int i = 1; // цифра, которую выводим на индикатор
     
    void setup(){
    pinMode(clock_pin, OUTPUT);
    pinMode(reset_pin, OUTPUT);
    pinMode (buttonPin, INPUT);
    shownumber(i); // выводим 1
    }
     
    void shownumber(int num){
    digitalWrite(reset_pin, HIGH);
    digitalWrite(reset_pin, LOW);
    while(num--){
    digitalWrite(clock_pin, HIGH);
    digitalWrite(clock_pin, LOW);
    }
    }
     
    void loop(){
    if (buttonPin == HIGH) // если кнопка нажата
    {
    i++; // увеличиваем счётчик на 1
    shownumber(i); // выводим на индикатор
    delay(500); // ждём 500 мс
    }
    }
     
     
  3. exclus

    exclus Нуб

    Спасибо, за быстрый ответ. Но не щелкает, выводит единицу и не прибаляет. Добавил строчки для отслеживания через терминал.
     
  4. PHP:
    // код удалён. Смотрите ниже
     
     
  5. exclus

    exclus Нуб

    Нужно добавить еще reset перед циклом, т.к. начинает с "2".

    Можно прокоментировать эти строки
    Код (Text):
    void shownumber(int num){
    reset();
    while(num--){
    digitalWrite(clock_pin, HIGH);
    digitalWrite(clock_pin, LOW);
    }
    }
    void reset(){
    digitalWrite(reset_pin, HIGH);
    digitalWrite(reset_pin, LOW);
    }
     
    Индикатор пропускает значения, в терминале все хорошо ((
     
  6. PHP:
    int CLOCK_PIN = 1; // тактовая частота
    int RESET_PIN = 2; // сброс счетчика
    int buttonPin = 8; // кнопка
    int i = 1; // цифра, которую выводим на индикатор
     
    void setup(){
    pinMode(CLOCK_PIN, OUTPUT); // CLOCK_PIN как выход
    pinMode(RESET_PIN, OUTPUT); // RESET_PIN как выход
    pinMode (buttonPin, INPUT); // buttonPin как вход
    // обнуляем индикатор
    digitalWrite(RESET_PIN, HIGH);
    digitalWrite(RESET_PIN, LOW);
    showNumber(i); // выводим единицу
    Serial.begin(9600); //поднимаем соединение
    Serial.print(i); // пишем в терминал единицу
    }
     
    void showNumber(int n) // показываем цифру
    {
        // Первым делом обнуляем текущее значение
        digitalWrite(RESET_PIN, HIGH);
        digitalWrite(RESET_PIN, LOW);
     
        // Далее быстро "прокликиваем" счётчик до нужного
        // значения
        while (n--) {
            digitalWrite(CLOCK_PIN, HIGH);
            digitalWrite(CLOCK_PIN, LOW);
        }
    }
     
     
     
    void loop(){
    int knopkaState=digitalRead(buttonPin); // получаем состояние кнопки
    if (knopkaState==HIGH) // если нажата, то
    {
    i++; // увеличиваем счётчик на 1
    showNumber(i); // выводим на индикатор
    Serial.print(i); // пишем в терминал
    delay(500); // ждём 500 мс
    }
    }
     
  7. exclus

    exclus Нуб

    Спасибо большое, не подскажите где можно ещё примеры посмотреть простейшие для обучения ?
     
  8. Вот здесь очень хорошие примеры, правда на английском;
    Ещё:
    Яндекс , Google .
     
  9. Dmitriy Kunin

    Dmitriy Kunin Гик

    Я бы порекомендовал посмотреть всё, что есть тут http://wiki.amperka.ru/
    Когда решил попробовать индикатор с микросхемой предлогаемой Амперкой, не стал даже Ардуино подключать.
    Правильно оформленная кнопка с конденсатором и резисторм прекрасно переключает цифирки одну за одной. Это я к тому, что на вход Ардуины, тоже кнопку не просто подключают...
    Ещё одно наблюдение, схеме нужен ресет, микросхемы этой технологии сохраняют своё состояние, без источника питания, довольно долго, больше суток не пробовал, но сутки держат.
     
  10. exclus

    exclus Нуб

    Видео уроки все посмотрел и проработал те, на которые хватало компонентов. Так я кнопку правильно подключил и подтянул к земле. Это как раз узнал из видео уроков. В терминал пишет очень четко! Но вот с индикаторами пока не очень! Отлавливать глюк пока не хватает знаний. Спасибо еще раз. Уже сижу, мучаю LCD (20x4). )))
     
  11. exclus

    exclus Нуб

    Вот )) Правда сейчас надо понять как сдвиговый регист подключить!
     

    Вложения: