Умный секундомер

StR1k3R
Offline
Зарегистрирован: 13.11.2020

Всех приветствую!

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

Код написал, но почему-то не могу заставить диоды мигать. В этом деле новичок.


#define LED 7
#define LED 4
#define del 500
#include <LiquidCrystal.h>
#define DIODE_DROP  0.6
LiquidCrystal lcd(13, 12, 11, 10,  9,  8);
unsigned long startTime; 
boolean running = true;
void setup()
{
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  lcd.begin(16, 2);
}
void blinkLED()
{
digitalWrite(7,HIGH);
  delayMicroseconds(1000);
digitalWrite(7,LOW);
  delayMicroseconds(1000);
  digitalWrite(4,HIGH);
  delayMicroseconds(1000);
digitalWrite(4,LOW);
  delayMicroseconds(1000);
}
void loop()
{
  blinkLED();
  startTime = millis()/1000;
   lcd.setCursor(0, 0);
  if(startTime%5==0){
    lcd.print(millis()/1000.);  
    lcd.print(".");
  }else{
    lcd.print(millis()/100.);
  } 
   delay(100);
  lcd.clear();

  }

 

b707
Онлайн
Зарегистрирован: 26.05.2017

так они мигают, только очень быстро - вы этого не успеваете заметить. У вас частота мигания настроена 1000 раз в секунду

 

Нравятся мне темы с приставкой "умный..." - умный дом, умный. секундомер... Сразу хочется спросить, - насколько умный? Умнее хозяина? :))

b707
Онлайн
Зарегистрирован: 26.05.2017

Вы предлагаете мне зарегистрироватся на ТинкерКаде, чтобы посмотреть Ваш код? - думаете мне больше заняться нечем?

Хотите помощи - выкладывайте код сюда

b707
Онлайн
Зарегистрирован: 26.05.2017

вы разницу между delay(1000) и delayMicroseconds(1000) не понимаете?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

вы разницу между delay(1000) и delayMicroseconds(1000) не понимаете?

а надо? и там и там жеж 1000

StR1k3R
Offline
Зарегистрирован: 13.11.2020

delay - миллисекунд

delayMicroseconds - микросекунды.

StR1k3R
Offline
Зарегистрирован: 13.11.2020

вся проблема в том, что, как только я совмещаю два действия, что-то начинает работать не корректно. 

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

 
#define LED 7
#define LED 4
#define del 500
#include <LiquidCrystal.h>
#define DIODE_DROP  0.6
LiquidCrystal lcd(13, 12, 11, 10,  9,  8);
unsigned long startTime; 
boolean running = true;
void setup()
{
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  lcd.begin(16, 2);
}
void blinkLED()
{
digitalWrite(7,HIGH);
  delayMicroseconds(1000);
digitalWrite(7,LOW);
  delayMicroseconds(1000);
  digitalWrite(4,HIGH);
  delayMicroseconds(1000);
digitalWrite(4,LOW);
  delayMicroseconds(1000);
}
void loop()
{
  blinkLED();
  startTime = millis()/1000;
   lcd.setCursor(0, 0);
  if(startTime%5==0){
    lcd.print(millis()/1000.);  
    lcd.print(".");
  }else{
    lcd.print(millis()/100.);
  } 
   delay(100);
  lcd.clear();
 
  }
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

StR1k3R пишет:

я просто в этом деле новичок

Не, дело не в этом. 

b707
Онлайн
Зарегистрирован: 26.05.2017

StR1k3R пишет:

я просто в этом деле новичок,

Что, даже после подсказки не видишь, чем отличаются эти коды?

 void blinkLED()
{
digitalWrite(7,HIGH);
  delayMicroseconds(1000);
digitalWrite(7,LOW);
  delayMicroseconds(1000);
  digitalWrite(4,HIGH);
  delayMicroseconds(1000);
digitalWrite(4,LOW);
  delayMicroseconds(1000);
}

и это?

 
digitalWrite(7,HIGH);
  delay(1000);
digitalWrite(7,LOW);
  delay(1000);
  digitalWrite(4,HIGH);
  delay(1000);
digitalWrite(4,LOW);
  delay(1000);

тогда ты не новичок, ты дебил

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну вот и выяснили, кто умнее - секундомер или его хозяин.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Держи студент, сам проверишь, я только мигание поправил:
 

#define LED 7
#define LED 4
#define del 500
#include <LiquidCrystal.h>
#define DIODE_DROP  0.6
LiquidCrystal lcd(13, 12, 11, 10,  9,  8);
unsigned long startTime; 
unsigned long oldMillis; 
boolean running = true;

void setup()
{
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  lcd.begin(16, 2);
  oldMillis = millis(); 
}

void blinkLED()
{
  if(millis()- oldMillis >= 1000){
  digitalWrite(7,!digitalRead(7)); 
  digitalWrite(4,!digitalRead(4));
  oldMillis = millis();
  }
}


void loop()
{
  blinkLED();
  startTime = millis()/1000;
   lcd.setCursor(0, 0);
  if(startTime%5==0){
    lcd.print(millis()/1000.);  
    lcd.print(".");
  }else{
    lcd.print(millis()/100.);
  } 
   delay(100);
  lcd.clear();

  }

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Осталось поправить код в голове хозяина. Когда хозяин думает,то должен мигать двумя глазами. Перестал мигать,значит завис.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

Нравятся мне темы с приставкой "умный..."

Так и хочется ответить крылатой фразой от dimax!