схемотехника, триггер на atmega.

Тема в разделе "Закажу проект", создана пользователем di12ni, 23 июн 2019.

  1. di12ni

    di12ni Нуб

    нужно создать разработать схему и плату для управление 12ю каналами через оптроны
    если в кратце нужна ардуино мини про 3.3v но с небольшим изменением .
    нужно добавить 12 smd резисторов и 12 оптронов
    добавить пины для подключения корпусных 2х кнопок
    и
    добавить линейный стабилизатор3.3 вольта
    [​IMG]
    типо такого, со штекером mini usb
    добавить пины для подключения Кабель USB RS232
    так же добавить отверстия под IC 2262 связав кнопки с дорожками под корпусные кнопки
    пример - разработывали плату шилд для мега2560-[​IMG][/url] url картинки[/IMG]
    https://ibb.co/vs01VX9

    код работающий на макетной плате -
    Код (C++):
    int macros1_time = 1000; //длительность работы первого макроса
    int macros2_time = 200; //длительность работы второго макроса
    int macros2_time_max = 2000; // максимальнач длительность работы второго макроса (регилируется удержанием первой кнопки)
    int timer;

    #define butt1 2 //пин первой кнопки
    #define butt2 3 //пин второй кнопки



    boolean buttState[2],buttFlag[2],butt;

    byte opt[12] = {4,5,6,7,8,9,10,11,12,13,14,15}; //номера пинов оптопар в порядке срабатывания

    void setup() {
      for (byte i = 0; i < 12; i++) {
        pinMode(opt[i],OUTPUT);
      }
      pinMode(butt1,INPUT_PULLUP);
      pinMode(butt2,INPUT_PULLUP);
    }

    void loop() {
      delay(1);
      butt = !digitalRead(butt1);
      if (butt == 1 && buttFlag[0] == 0) {
        buttFlag[0] = 1;
        buttState[0] =! buttState[0];
      } else if (butt == 0 && buttFlag[0] == 1) {
        buttFlag[0]=0;
        macros1(); //запускает макрос первой кнопки
      }
      butt = !digitalRead(butt2);
      if (butt == 1 && buttFlag[1] == 0) {
        buttFlag[1] = 1;
        buttState[1] =! buttState[1];
        macros2(); //запускает второй макрос
      } else if (butt == 0 && buttFlag[1] == 1) {
        buttFlag[1]=0;
      }
      if (buttFlag[0]==1) {
        timer++;
        if (timer>2000) {
          macros2_time+=30;
          timer=0;
          if (macros2_time>macros2_time_max) {
            macros2_time = 200;
          }
        }
      }
    }

    void macros1()
    {
      for (byte i = 0; i < 12; i++) {
        digitalWrite(opt[i],1);
      }
      delay(macros1_time);
      for (byte i = 0; i < 12; i++) {
        digitalWrite(opt[i],0);
      }
    }

    void macros2()
    {
      for (byte i = 0; i < 12; i++) {
        digitalWrite(opt[i],1);
        delay(macros2_time);
        if (i==11) {
          digitalWrite(opt[i-1],0);
          delay(macros2_time);
          digitalWrite(opt[i],0);
        } else if (i!=0) {
          delay(macros2_time);
          digitalWrite(opt[i-1],0);
        }
      }
    }
    Ваши предложения в лс
     
  2. b707

    b707 Гуру

    не техзадание, а бред какой-то
     
    Mestniy и parovoZZ нравится это.
  3. dkg11

    dkg11 Нерд

    пишите
    dkg11(dog)inbox.ru
    мега2560 имеется под рукой