Радиомодуль RF-5V (Прием данных)

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015
Вот пример

unsigned long time;
 
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print("Time: ");
  time = millis();
  //выводит количество миллисекунд с момента начала выполнения программы
  Serial.println(time);
  // ждет секунду, перед следующей итерацией цикла.
  delay(1000);
}

Вот еще один пример

const int ledPin =  13;      // номер выхода, подключенного к светодиоду
// Variables will change:
int ledState = LOW;             // этой переменной устанавливаем состояние светодиода
long previousMillis = 0;        // храним время последнего переключения светодиода
 
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
 
void setup() {
  // задаем режим выхода для порта, подключенного к светодиоду
  pinMode(ledPin, OUTPUT);     
}
 
void loop()
{
  // здесь будет код, который будет работать постоянно
  // и который не должен останавливаться на время между переключениями свето
  unsigned long currentMillis = millis();
  
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    // сохраняем время последнего переключения
    previousMillis = currentMillis; 
 
    // если светодиод не горит, то зажигаем, и наоборот
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
 
    // устанавливаем состояния выхода, чтобы включить или выключить светодиод
    digitalWrite(ledPin, ledState);
  }
}

 

mag155
Offline
Зарегистрирован: 21.12.2017

Благодарю. Вопрос где привязывается именно светодиод к millis ?

mag155
Offline
Зарегистрирован: 21.12.2017

Я правильно понимаю? Строка 20 и 25 ?

Green
Offline
Зарегистрирован: 01.10.2015

Штирлиц поднял глаза. Это были глаза mag155...

mag155
Offline
Зарегистрирован: 21.12.2017

Доброго времени суток. Разбираюсь с вашим скетчем с диодом все понятно, пытаюсь привязать кнопку.

void loop() {
 unsigned long currentMillis = millis();
 buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH) //если кнопка нажата 
 if(currentMillis - previousMillis > interval) {// и прошел интервал
previousMillis = currentMillis;// сохраняем время 
  if (ledState == LOW)// если диод не горит
      ledState = HIGH;
    else
      ledState = LOW;


     
      
 digitalWrite(ledPin, ledState);

Но при нажатии кнопки диод загорается сразу, без выдержки времени подскажите где ошибка ?

mag155
Offline
Зарегистрирован: 21.12.2017

Разобрался, нужно было добавить .

digitalWrite (buttonPin,buttonState);

 

mag155
Offline
Зарегистрирован: 21.12.2017

Все получилось, но есть зависимость если interval больше чем interval1 диод не гаснит .Вчем причина? Подскажите если не сложно.

const int ledPin = 13;
const int buttonPin = 4; 
int ledState = 0;
long previousMillis = 0;
long previousMillis1 = 0;
long interval = 2000;
long interval1 = 2000;
int buttonState = 0;  
void setup() {
pinMode (ledPin,OUTPUT);
pinMode(buttonPin, INPUT);  
}

void loop() {

   unsigned long currentMillis = millis();
 unsigned long currentMillis1 = millis();

 buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH);  //если кнопка нажата 
 if(currentMillis1 - previousMillis > interval) {// и прошел интервал
previousMillis = currentMillis;// сохраняем время 
  if (ledState == LOW)// если диод не горит
     ledState = HIGH;
  
 digitalWrite(ledPin,ledState ); 
  
   }
{

 if (buttonState == LOW)
 if(currentMillis - previousMillis >= interval1) {
  previousMillis = currentMillis;
 if (ledState == HIGH)// если диод  горит
   ledState = LOW;
 
   digitalWrite (buttonPin,buttonState);
   digitalWrite(ledPin,ledState );    

}
}
}

 

mag155
Offline
Зарегистрирован: 21.12.2017

Штирлиц прям вдохновил БЛАГОДАРНОСТЬ ему !!! Разобрался сам.

mag155
Offline
Зарегистрирован: 21.12.2017

Бывает если долго не нажимать кнопку диод загорается без выдержки.Укажите на косяки кому не сложно?

mag155
Offline
Зарегистрирован: 21.12.2017

Братья!!!! Выручайте.