Как сделать прерывания для считывания показаний датчика при динамической индикации

Тема в разделе "Arduino & Shields", создана пользователем blackflash2009, 8 авг 2023.

  1. Только что дошло ? я и язык программирования ардуино иде не знаю разве это по коду полу С поло ардуиновский не понятно.
    Ну коль все тут злющие пожалуй и хватит
     
  2. Вдруг кому интересно и кто сможет доделать
    Код (C++):
    #include <avr/io.h>  
    #include <util/delay.h>
    #define SHE PB2         // нога импульсов на счет PB2
    #define SBR PB1         // нога сброса счетчика  PB1
    #define SEG1 PB4         // нога сброса счетчика  PB4
    #define SEG2 PB0         // нога сброса счетчика  PB3
    int8_t temp;    // освобождаем память для переменной "temp"
    int8_t grad; // освобождаем память для переменной "grad"

    void setup() {
       pinMode(A3, INPUT);
    // нога подачи сигнала на отсчет
       DDRB |= (1<<SHE);     // конфигурируем пин как выход
       PORTB &= ~(1<<SHE);   // по умолчанию  выключен
    // нога сброса счетчика
       DDRB |= (1<<SBR);     // конфигурируем пин как выход
       PORTB &= ~(1<<SBR);   // по умолчанию  выключен
    // нога первого сегмента
       DDRB |= (1<<SEG1);     // конфигурируем пин как выход первый сегмент
       PORTB &= ~(1<<SEG1);   // по умолчанию  выключен
    // нога второго сегмента
       DDRB |= (1<<SEG2);     // конфигурируем пин как выход второй сегмент
       PORTB &= ~(1<<SEG2);   // по умолчанию  выключен
        Serial.begin(9600); //
    }

    void loop() {
    temp = analogRead(A3); // переменная находится в интервале 0 - 1023
    grad = temp >> 1;
    int8_t var2 = (grad/10%10); //
    int8_t var3 = (grad%10%10); //
    //  --------выводим значения на 1 знак   ------------------
    //------------сбрасываем микрасхему cd2026------------------------------
         PORTB |= (1<<SBR);// состояние пина включить
         delayMicroseconds(1);    // задержка
         PORTB &= ~(1<<SBR); //  состояние пина выключить
    //------------------------------------------------------------

       for (int i = 0; i < var2 ; i++) {
       delayMicroseconds(1); // задержка между импулсами на пин клок с частотой 1мГц
       PORTB |= (1<<SHE);  // инвертируем состояние пина включить
       delayMicroseconds(1);
       PORTB &= ~(1<<SHE);  // инвертируем состояние пина выключить
       }
    //----------------------------------------------------------------
       PORTB |= (1<<SEG1);     // включаем 1 знак
       delay(15) ;
       PORTB &= ~(1<<SEG1);   // выключаем 1 сегмент

    //  --------выводим значения на 2 знак   ------------------
    //------------сбрасываем микрасхему cd2026------------------------------
         PORTB |= (1<<SBR);// состояние пина включить
         delayMicroseconds(1);    // задержка
         PORTB &= ~(1<<SBR); //  состояние пина выключить
    //------------------------------------------------------------            
       for (int i = 0; i < var3 ; i++) {
       delayMicroseconds(1); // задержка между импулсами на пин клок с частотой 1мГц
       PORTB |= (1<<SHE);  // инвертируем состояние пина включить
       delayMicroseconds(1);
       PORTB &= ~(1<<SHE);  // инвертируем состояние пина выключить
       }
    //----------------------------------------------------------------    
        PORTB |= (1<<SEG2);     // включаем 2 знак
        delay(15) ;
        PORTB &= ~(1<<SEG2);   // выключаем 2 сегмент

     
    }
     
  3. Плата под 3х значный самый дешовый с али
     

    Вложения:

    • 44.zip
      Размер файла:
      19,4 КБ
      Просмотров:
      74
  4. b707

    b707 Гуру

    почему А1 конфигурируем через pinMode(), а остальные пины через регистры? :) Если вы один раз воспользовались какой-то функцией, в частности пинМод - она у же попала в код и далее экономить, заменяя ее регистрами - бессмысленно.

    Это тем более интересно, что строчка pinMode(A3, INPUT); в этом коде вообще не нужна, аналоговые пины функцией pinMode() не настраивают.
     
  5. b707

    b707 Гуру

    так злющие мы не потому что вы языка не знаете, а потому что не хотите учиться. На все попытки вам что-то обьяснить - ответы "мне это не нужно", "я вникать не собираюсь".
    А если не вникать - значит вы хотите свою самоделку чужим трудом построить, чтобы вам фактически каждую строчку кода кто-то подсказал и отладил. Нафига оно, такое "творчество" ? это нахлебничество, а не хобби
     
    DetSimen нравится это.
  6. parovoZZ

    parovoZZ Гуру

    лучше чуть доплатить, но купить с проводом
    upload_2023-8-11_16-25-29.png
     
  7. parovoZZ

    parovoZZ Гуру

    он же писал, что пишет по гуглу. Не читал что ле???
     
  8. Ну если довести код до ума можно чем нибудь подрыгать нога ресет свободна если использовать 2 сегмента. я делал для травильного аквариума перешел на персульфат аммония а это дрянь не травит если температура ниже 30 и выше 45
     
  9. Asper Daffy

    Asper Daffy Иксперд

    С первым согласен, второе - чушь. От 40 до 55 отлично травит. При 50 быстрее, чем при 40. Вообще, 50 - рекомендуемая для него температура.

    Только зачем делать термостат для травилки, если вот такая хрень по цене чашки кофе отлично решает проблему?
     
    parovoZZ нравится это.
  10. ее ждать месяц. Вообще, 50 - рекомендуемая для него температура Это так прекрасно дышать испарениями При 50 уже начинается парообразования при 25 градусов вокруг 400р дороговатый кофе
     
  11. Asper Daffy

    Asper Daffy Иксперд

    Не знал, что Вам нравится. Но она травит, а Вы сказали, что нет, вот я и поправил.
    Не замечал. Ну, мож когда поднимется какой парок самую малость, но вытяжка в мастерской всё решает.

    При 50 градусах она лучше всего травит. Вам надо травить или воздух сухой? Если второе, то заказывайте готовые платы в резоните.

    И ещё, там если что и парит, так чистая вода. Сам персульфат аммония абсолютно безвреден, не поверите, но он также известен под названием "пищевая добавка Е923". А при химической реакции травления в воздух выделяется кислород и ничего больше.
    Вы куда-то не туда смотрите, у меня 106 рублей. Впрочем, дело Ваше. Но без знания языка Вам этот проект не осилить. Я ведь Вам написал как сделать неблокирующее измерение температуры, но Вы даже внимания не обратили, потому что сделать сами всё равно не можете.
     
  12. parovoZZ

    parovoZZ Гуру

    мне алик показывает 106 рублей.
     
  13. parovoZZ

    parovoZZ Гуру

    во времена, когда нельзя было просто вот так взять и заказать плату, я травил в баночке из под Voimix, которую клал на утюг. 30 минут и плата готова.
     
  14. b707

    b707 Гуру

    а мне 106 руб цена + 273 доставка
     
  15. parovoZZ

    parovoZZ Гуру

    да на хер. Проще тогда на охоне купить
     
  16. parovoZZ

    parovoZZ Гуру

    upload_2023-8-11_20-49-4.png
    и дешевле и завтра можно уже забрать.