Jump to content
Guest ренат

Программа управления светодиодами

Recommended Posts

Guest ренат

Всем здрасти))))

прошу помощи в написании программы

мои знания программирования на ардуино основаны на примерах и школьного курса )))

так вот есть программы 

int LedPin = 8;             // Подключаем светодиод к порту 13
int ButPin = 2;             // Подключаем кнопку к выходу 10
int flag = 0;                // флаг состояния

int LedPinTime = 100;

void setup()
{
  pinMode(LedPin, OUTPUT);   // Инициализируем порт "ledPin" как выходной
}  

void loop()
{
  if(digitalRead(ButPin) == HIGH && flag == 0)      
    {                                              
      digitalWrite(LedPin, !digitalRead(LedPin));
      flag = 1;
    }
  
  if(digitalRead(ButPin) == LOW && flag == 1)
    {
      flag = 0;
    }  
}

собрал из кусков, работает )))))

но не то что мне нужно 

Мне нужно чтобы при нажатие одной кнопки(без фиксации) светодиод загорался на три секунды ( и не важно держишь ты кнопку или кратковременно нажал, он через три секунды потухнет) 

помогите кто может))) я в благодарность могу и на телефон денег кинуть )))) спасибо

Share this post


Link to post
Share on other sites
42 минуты назад, Гость ренат сказал:

digitalWrite(LedPin, !digitalRead(LedPin));

заменить на

  digitalWrite(ledPin, HIGH);   // включаем светодиод
  delay(3000);                  // ждем секунду
  digitalWrite(ledPin, LOW);    // выключаем светодиод

 

 

Share this post


Link to post
Share on other sites

ВСЕМ ПРИВЕТ!!! 

нужнана небольшая помощь в доработке )))

каждый светодиод включается своей кнопкой и зажигается только тогда когда другой не горит 

вопрос: как сделать чтобы при включении одного  светодиода, второй гас. т е горит один, не дожидаясь пока он потухнет включаем второй, а тот тухнет. 

очень надо)) помогите пожалуйста

зарание спасибо

const int
button1Pin = 2;
const int button2Pin = 3;
const int led1Pin = 8;
const int led2Pin = 7;
void setup() 
{
 pinMode(led1Pin, OUTPUT);
 pinMode(led2Pin, OUTPUT);
 pinMode(button1Pin,INPUT);
 pinMode(button2Pin,INPUT);
}                 
void loop()
{
 if
 (digitalRead(button1Pin) == HIGH) 
 {
  digitalWrite(led1Pin,HIGH);
  delay(3000);
  digitalWrite(led1Pin,LOW);
 } 
 if(digitalRead(button2Pin) == HIGH) 
 {
  digitalWrite(led2Pin,HIGH);
  delay(3000);
  digitalWrite(led2Pin,LOW);
 }
}

 

Share this post


Link to post
Share on other sites

Время – деньги и наноамперы: применение часов реального времени Maxim Integrated

Зачем использовать внешнюю микросхему часов реального времени (RTC), а не внутренние RTC микроконтроллера? Хотя бы потому, что у RTC MAX31342 производства Maxim Integrated типовое потребление составляет 150 нА при 3 В и температуре 25°С, а у встроенных RTC одного из самых малопотребляющих микроконтроллеров при тех же условиях – примерно 370 нА.

Читать статью

1 час назад, IMXO сказал:

шара два раза подряд не катит :rake:

почему два раза подряд )))) я пока ждал вечера сам немного разобрался )))) 

вам спасибо за помощь  первом варианте )))) там я сам справился )))

 а вот как сделать чтобы при включении одного  светодиода, второй гас. т е горит один, не дожидаясь пока он потухнет включаем второй, а тот тухнет.

я не могу обмозговать ))) не укладывается)

т.е. ума не хватает )

может поможете ) 

я в долгу не останусь ))) 

к стати ! знаю я как !!! заменой delay на millis  но как написать не пойму 

наведите на мыслю хотя бы )

спасибо

Edited by ренат07

Share this post


Link to post
Share on other sites
                     

Чип-резисторы Panasonic - технология мягких выводов и сертификация AEC-Q200

Технология мягких выводов чип-резисторов производства компании Panasonic. Обзор серий с оптимизированными параметрами: прецизионных тонкопленочных, токоизмерительных, антисерных, резисторов с повышенной стойкостью к статике и импульсным нагрузкам, резисторных сборок.

Читать статью

1 час назад, ренат07 сказал:

к стати ! знаю я как !!! заменой delay на millis  но как написать не пойму 

забавно, даю подсказку он здесь на не нать, твое "ума не хватает" называется "конечный автомат" гугл о нем знает.

твоя задача имеет четыре состояния

состояние_0: диоды выключены
состояние_1: лед1=1, лед2=0 , сброс счетчика милисекунд, переход на состояние_3
состояние_2: лед1=0, лед2=1, сброс счетчика милисекунд, переход на состояние_3
состояние_3: отсчет милисекунд , если отсчитали нужную задержку  переход на состояние_0

все это решается обычными командами перехода switch/case

переход на состояние 1 или 2 устанавливается по нажатию кнопок.

Скрытый текст

void loop()
{
  delay(1); 
  if(digitalRead(ButPin1) == HIGH && flag_1 == 0)      
    {                                              
      task_state=1;
      flag_1 = 1;
    }
  if(digitalRead(ButPin1) == LOW && flag_1 == 1)
    {
      flag_1 = 0;
    } 

   if(digitalRead(ButPin2) == HIGH && flag_2 == 0)      
    {                                              
      task_state=2;
      flag_2 = 1;
    }
   if(digitalRead(ButPin2) == LOW && flag_2 == 1)
    {
      flag_2 = 0;
    } 
  
  switch(task_state)
    {
      case 0:
           digitalWrite(ledPin1, LOW);  
           digitalWrite(ledPin2, LOW); 
       break;
      case 1:
           digitalWrite(ledPin1, HIGH);  
           digitalWrite(ledPin2, LOW); 
           count_delay=0;
           task_state=3;
       break; 
      case 2:
           digitalWrite(ledPin1, LOW);  
           digitalWrite(ledPin2, HIGH);
           count_delay=0;
           task_state=3;
       break; 
      case 3:
           if(count_delay<3000)
              {count_delay++;}
            else
              {task_state=0;}   
       break; 
      default:
           task_state=0;
    }
}

 

 

Share this post


Link to post
Share on other sites
 

забавно, даю подсказку он здесь на не нать, твое "ума не хватает" называется "конечный автомат" гугл о нем знает.

хм ))) прикольно )) я даже загуглил 

твой совет изумителен ) честно ))) но узнал я это поздно (((

вот мой текст с millis

тут все работает как мне надо за одним исключением 

Вот смотри: я нажал тактовую кнопку и загорелся светодиод на 3 сек. и погас, если держу три сек. и отпускаю то он горит три сек., а мне для идеальности надо реализовать так: не важно, нажал я кнопку один раз или держу её минуту, светодиод должен гореть три секунды и потухнуть даже если кнопку я не отпустил

я изучил команды ардуино и не нашел ни чего подходящего 

Такое вообще вариант реализовать?

const int
button1Pin = 2;
const int
button2Pin = 3;
const int
led1Pin = 7;
const int
led2Pin = 8;
unsigned long
led1OnTime;
unsigned long led2OnTime;
bool led1On;
bool led2On;
void setup() 
{
 pinMode(led1Pin,OUTPUT);
 pinMode(led2Pin,OUTPUT);
 pinMode(button1Pin,INPUT);
 pinMode(button2Pin,INPUT);
 led1On = false;
 led2On = false;
}
void loop()
{
 if (digitalRead(button1Pin)== HIGH) 
 {
  digitalWrite(led1Pin,HIGH);
  digitalWrite(led2Pin,LOW);
  led1On = true;
  led1OnTime = millis();
 }
 if(digitalRead(button2Pin) == HIGH) 
 {
  digitalWrite(led2Pin,HIGH);
  digitalWrite(led1Pin,LOW);
  led2On = true;
  led2OnTime = millis();
 }
 if(led1On)
 if(millis() -led1OnTime > 3000) 
 {
  digitalWrite(led1Pin,LOW); 
  led1On = false;
 }
 if(led2On)
 if(millis() -led2OnTime > 3000)
 {
  digitalWrite(led2Pin,LOW);
  led2On = false;
 }
}

 

 


void loop()
{
  delay(1); 
  if(digitalRead(ButPin1) == HIGH && flag_1 == 0)      
    {                                              
      task_state=1;
      flag_1 = 1;
    }
  if(digitalRead(ButPin1) == LOW && flag_1 == 1)
    {
      flag_1 = 0;
    } 

   if(digitalRead(ButPin2) == HIGH && flag_2 == 0)      
    {                                              
      task_state=2;
      flag_2 = 1;
    }
   if(digitalRead(ButPin2) == LOW && flag_2 == 1)
    {
      flag_2 = 0;
    } 
  
  switch(task_state)
    {
      case 0:
           digitalWrite(ledPin1, LOW);  
           digitalWrite(ledPin2, LOW); 
       break;
      case 1:
           digitalWrite(ledPin1, HIGH);  
           digitalWrite(ledPin2, LOW); 
           count_delay=0;
           task_state=3;
       break; 
      case 2:
           digitalWrite(ledPin1, LOW);  
           digitalWrite(ledPin2, HIGH);
           count_delay=0;
           task_state=3;
       break; 
      case 3:
           if(count_delay<3000)
              {count_delay++;}
            else
              {task_state=0;}   
       break; 
      default:
           task_state=0;
    }
}

 

 

 

Edited by ренат07

Share this post


Link to post
Share on other sites

не надо тупых цитат, это запрещено правилами форума П2.9, придет модер раздела выпишет бан.

52 минуты назад, ренат07 сказал:

тут все работает как мне надо за одним исключением 

если есть исключения значит не работает или нет?

 

54 минуты назад, ренат07 сказал:

Такое вообще вариант реализовать?

ты под спойлером смотрел?

Share this post


Link to post
Share on other sites
3 минуты назад, IMXO сказал:

если есть исключения значит не работает или нет?

работает !))) просто этот момент с потухание светодиода 

да , смотрел конечно )))  но чет не заработала,  const  под свои переписал, может библиотеку какую нибудь не добавил, просто switch case  я так не углублялся)

простите...

я думал вы модератор ;)

Share this post


Link to post
Share on other sites
6 минут назад, ренат07 сказал:

но чет не заработала

код рабочий , максимум возможны ложные срабатывания, если функция опроса пинов не давит дребезг контактов, лечится увиличением задержки до 10мс и уменьшением счетчика с 3000 до 300

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • А есть ли вообще в таком корпусе tl431?
    • Теплый, ламповый    
    • Че я даю? Ничего я не даю. На авито комп. Комплектующие не покупаю. Там можно купить.... ну например землю на участок, найти водителя крана/самосвала, обмоточный провод, ну или ещё чего не слишком технически сложное. Ком. Комплектующие обычно на Хоботе продают-покупают (комок) но там в последнее время кидалово случаются.
    • @Yuretskok , вы видимо мало работали со студентами.
    • Уважаемый asvetp, просматривая исходник,  увидел что установленное начальное значение уровня громкости - 15. А если изменить это значение в меньшую сторону  получится ли уменьшить уровень звука RDA5807? Просто у меня тоже с громкостью слегка "перебор". Вот  вырезал из исходника (FM_SSD1306_enc_3_3.asm):         ;Инициализация радиомодуля RDA5807М         ldi YL,LOW(Fst_EE)              ;Загр. в Y адр.хран. последней станции         clr YH                                     ;         ldi temp,15                            ;Установить начальное         sts volume,temp                  ; значение громкости = 15 А что касается функции набора текста для написания названий радиостанций, то намного удобнее это делать  на компьютере, заливая потом  новую прошивку через SPI, выведенный в доступное место, чем с помощью кнопок выбирать нужную букву/цифру/символ, переходя из одного подменю в другое, сохранять ее и т.д. и т.п. (если конечно Вы не планируете ввести в проект тачскрин от смартфона с QWERTY-клавиатурой)
    • В журнале ремонт и сервис применяется именно такая аббравеатура. Не вижу смысла её переиначивать. Там же достаточно статей по снижению Кш ибп. Не будь у ибп проблем с шумами я бы этот вопрос и не затронул. Вы слишком идеализируете реальное состояние импульсной продукции, особенно китайской бюджетного сегмента. Лично дорабатывал китайские ибп чтоб не шумели и не давали наводки в фм диапазоне. Чаще всего делов то в паре кондёров в нужных местах схемы, на которых китайцы сэкономили.  Я бы настоятельно рекомендовал автору вопроса таки найти трансформатор и восстановить работоспособность девайса в первоначальном виде. 
  • Similar Content

    • By Артур Проценко
      Доброго времени суток! 
      Если в кратце, то есть у меня шаговые двигатели Nema17. Я так понял гибридные, биполярные. Модель 17pm- k442-p5vs. Драйвер собрал на базе l298n методом ЛУТ. При подключении к ардуино двигатель вибрирует, пытается крутиться в разные стороны. Видео с проблемой и фото приложу ниже. Спасибо.  Видео проблемы , Слоумо, Фото драйвера
    • By Evgeniy90
      Здравствуйте. Имеется 4-х осевой драйвер tb6560 с древним lpt интерфейсом (мануал с распиновкой прилагаю). Идея в том, что бы подключить его для управления 2-мя униполярными 3rd-4Axis-TB6560-Set-User-Manual.pdfшаговиками(типа дши-200-1-1(1.5А,12В)) к Ардуино Уно , а в идеале вообще к Атмеге8.(не спрашивайте почему такой выбор, это всё "очумелые ручки")). В идеале нужно 6 цифровых выходов и +5 на Enable. Вопрос таков:возможно ли сделать такое подключение?какие особенности имеет такая схема?В каком порядке и к каким пинам подключать Ардуино (или атмегу)?
      Благодарю за внимание!
       
    • By ШколоКлокер
      в крацце. я спалил (не факт что умерли. не знаю как проверить) 4 разных транзистора.
      причина этой писанины. я не смог запустить мосфеты. делал все по схеме. все резисторы. даже диод ставил ибо нагрузка это 2амперный двигатель. подавал шим через ардуино. с разными частотами. не работает НИЧЕГО. я уже купил модуль где точно все распаяно как надо. не работает. он открыт все время. на на всю силу открыт. поставил диод. все равно не управляется ардуиной. код простейший (воид сетап:пинмод(5 аутпут); аналогврайт(5, 255)). но. когда я попровал с другой частотой  
      void setup() { // ШИМ 8 разрядов, 62,5 кГц TCCR1A = TCCR1A & 0xe0 | 1; TCCR1B = TCCR1B & 0xe0 | 0x09; pinMode(5, OUTPUT); analogWrite(5, 0; // на выводе 9 ШИМ=10% } void loop(){ } двигатель начал пищать. я надеюсь мосфет не пробило 5 ампер от аккумулятора когда я пытался грубо его включить.
      а еще я делал уже без резисторв но на крутом каком то мосфете. у которого порог открытия затвора больше ноля(вольт)  ирлб какойто. смотрел видео алекса гавера (заметки ардуинщика)
       
      я реально не знаю что уже делать. руки опускаются, а модель самолета и сервопривод с аппаратурой ждут. 
      доп фото скину по надобностью 
      (не спрашивайте почему я такой глуп и не знаю как запустить элементарный мосфет. мне 15. если поможете, куплю шоколадку) 
    • By Merlok Life
      Хочу сделать монстр-машинку с двигателем rs550 с металлическим корпусом на ардуино.
      Подскажите как управлять мотором через ардуино нано? 
       
    • By Геннадий Быков
      Уважаемые электронщики и им сочувствующие!
      Хочу на даче собрать макет морского маяка в человеческий рост. Но для этого необходима схема управляющая светодиодами. Основное, схема должна иметь независимое питание(Солнечная панель) и быть слаботочной (5-9 вольт). Как вижу я. Маяк ориентировочно высотой 1,50-1,80 м. В маяке, с низу до верха 6 окошек (по одному 5мм светодиоду). И на верху сам маяк из 8-ми 0,5 ваттных светодиодов установленных по кругу. С наступлением темноты, включаются диоды на "1 этаже" и раз в 5-10 минут происходит действие. Диоды поэтажно (снизу вверх) начинают загораться (как будто кто-то поднимается вверх по ступеням) и после загорания самого верхнего окна, через пару секунд, включается маяк. Поочередно по кругу (эффект метеора), со скоростью 2-3 сек на круг, делает оборотов 10 и выключается. Потом в обратной последовательности гасятся окошки (светодиоды) сверху в низ и остаются два нижних, периодически и независимо включающиеся и выключающиеся (эффект присутствия). И вновь через 5-10 минут вышеописанное действие. Буду очень признателен любым советам, ссылкам, помощью. Немного умею паять, немного знаю Ардуино. Готов в разумных пределах спонсировать, разработку и сборку.
×
×
  • Create New...