Перейти к содержанию

Нужен Скетч Для Таймера


Рекомендуемые сообщения

ардуино живет уже давно,а я знакомлюсь только сейчас-тяжковато идет обучение.Помогите кто может со скетчем!Нужен таймер:на одном 7-ми сегментном индикаторе , отображать время с помощью потенциометра от 0 до 9 сек,запуск таймера постоянно нажатой кнопкой и включением светодиода, с последущим гашением светодиода по окончании времени.На индикаторе время должно гореть постоянно

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Занимался подобным. Только управление одной кнопкой. Нажимаем кнопку - начинаем увеличивать счетчик минут на 7-сегментном индикаторе. Отпускаем - пошла выдержка, по мере уменьшения на индикаторе уменьшаются минуты. Доходит до 0 - звучит звуковой сигнал.

После окончания сигнала можно начинать сначала. Почему-то моя плата не выдерживает минуту - зависает. Поэтому задаем два раза выдержку по полминуты. Выдержку каждой ступени можно поменять на желаемую. Вот скетч:

int led=13; // сегмент индикатора G вывод 13

int led1=4; // сегмент индикатора Е вывод 4

int led2=5; // сегмент индикатора D вывод 5

int led3=6; // сегмент индикатора точка вывод 6

int led4=7; // сегмент индикатора С вывод 7

int led6=9; // сегмент индикатора В вывод 9

int led7=10; //сегмент индикатора А вывод 10

int led9=12; //сегмент индикатора F вывод 12

int pimp=2; // кнопка на выводе 2

int counter=2; // главный счетчик ступеней таймера

int pimpStatus=0; //статус кнопки, нажата-ненажата

int zad=500; // время между прибавлением ступеней при наборе

unsigned long tem; // текущее значение millis

unsigned long pred; // предельное значение для сравнения с millis

int vid=30000; // выдержка ступени в миллисекундах, деленная пополам

int speakerOut = 3; // биппер на выводе 3

void setup()

{pinMode(led, OUTPUT);

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(led4, OUTPUT);

pinMode(led5, OUTPUT);

pinMode(led6, OUTPUT);

pinMode(led7, OUTPUT);

pinMode(led8, OUTPUT);

pinMode(led9, OUTPUT);

pinMode(pimp, INPUT);

digitalWrite(pimp, HIGH); // подтягиваем вход кнопки к +5 вольт

}

void loop()

{

do

{digitalWrite(led3, HIGH);

delay (100);

digitalWrite(led3, LOW);

delay (1000);

pimpStatus=digitalRead(pimp);

}

while (pimpStatus > 0); // мигаем точкой до нажатия на кнопку

counter = 1; //начисляем счетчик ступеней

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, LOW);

digitalWrite(led9, LOW);

digitalWrite(led, LOW);

delay (zad);

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0) // проверяем кнопку

{counter = 2; // добавляем еще ступень

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, LOW);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, LOW);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 3;

digitalWrite(led1, LOW);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, LOW);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 4;

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, LOW);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 5;

digitalWrite(led1, LOW);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, LOW);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 6;

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, LOW);

digitalWrite(led7, LOW);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 7;

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, LOW);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 8;

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 9;

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

delay (zad);

}

pimpStatus=digitalRead(pimp);

if (pimpStatus == 0)

{counter = 10;

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, LOW);

}

digitalWrite(led, LOW);

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(led4, LOW);

digitalWrite(led5, LOW);

digitalWrite(led6, LOW);

digitalWrite(led7, LOW);

digitalWrite(led8, LOW);

digitalWrite(led9, LOW);

digitalWrite(led3, HIGH); //гасим индикатор, зажигаем точку

if (counter==10) //оцениваем счетчик ступеней

{ // если счетчик равен 10 - выполняем, если нет, уходим за фигурную скобку

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, LOW);

tem=millis(); //считываем millis

pred=tem+vid; // вычисляем макс значение для остановки выдержки ступени

do // не смог заставить делать выдержку больше полминуты

{tem=millis();} //поэтому два цикла по полминуты

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=9; // переназначаем счетчик ступеней дальше

}

if (counter==9)

{

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=8;

}

if (counter==8)

{

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=7;

}

if (counter==7)

{

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, LOW);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=6;

}

if (counter==6)

{

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, LOW);

digitalWrite(led7, LOW);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=5;

}

if (counter==5)

{

digitalWrite(led1, LOW);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, LOW);

digitalWrite(led7, HIGH);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=4;

}

if (counter==4)

{

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, LOW);

digitalWrite(led9, HIGH);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=3;

}

if (counter==3)

{

digitalWrite(led1, LOW);

digitalWrite(led2, HIGH);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, LOW);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=2;

}

if (counter==2)

{

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led4, LOW);

digitalWrite(led6, HIGH);

digitalWrite(led7, HIGH);

digitalWrite(led9, LOW);

digitalWrite(led, HIGH);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=1;

}

if (counter==1)

{

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led4, HIGH);

digitalWrite(led6, HIGH);

digitalWrite(led7, LOW);

digitalWrite(led9, LOW);

digitalWrite(led, LOW);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

tem=millis();

pred=tem+vid;

do

{tem=millis();}

while (tem<pred);

counter=0;

}

// закончили выдержку, сигнализируем

digitalWrite(led, HIGH); // включаем "минус"

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(led4, LOW);

digitalWrite(led5, LOW);

digitalWrite(led6, LOW);

digitalWrite(led7, LOW);

digitalWrite(led8, LOW);

digitalWrite(led9, LOW);

// следующий кусок кода не мой, но там все ясно, мигаем, сигналим пищалкой

for(int iVariable = 0; iVariable < 10; iVariable++) { // alarm length

digitalWrite(led1, HIGH);

delay(100);

digitalWrite(led9, HIGH);

delay(100);

digitalWrite(led7, HIGH);

digitalWrite(led1, LOW);

delay(100);

digitalWrite(led6, HIGH);

digitalWrite(led9, LOW);

delay(100);

digitalWrite(led4, HIGH);

digitalWrite(led7, LOW);

delay(100);

digitalWrite(led2, HIGH);

digitalWrite(led6, LOW);

delay(100);

digitalWrite(led4, LOW);

delay(100);

digitalWrite(led2, LOW);

delay(400);

// The above code creates a loading bar effect with the LED's

for(int tVariable = 0; tVariable < 5; tVariable++) { // another loop function

analogWrite(speakerOut, 150);

delay(50);

analogWrite(speakerOut, 0);

delay(50);

analogWrite(speakerOut, 5);

delay(50);

analogWrite(speakerOut, 0);

delay(50);

}

// The above code creates a buzzer noise alarm

}

digitalWrite(led, HIGH); //оставляем "минус" и идем сначала

}

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...