Проблема с использованием последовательного цикла
Поэтому я создал этот проект, чтобы светодиод мигал с постоянной скоростью всякий раз, когда программа работает. Первый светодиод (зеленый) будет мигать все быстрее и быстрее по мере приближения объекта к датчику. Второй светодиод (синий(в коде обозначается как белый)) должен постоянно мигать. Светодиод (синий) мигает только тогда, когда мой ультразвуковой датчик имеет что - то в пределах досягаемости. Я хотел бы сделать так, чтобы он мигал независимо от обстоятельств. Это, вероятно, что - то очевидное, что я упускаю-извините мою нуб-несс ПРИМЕЧАНИЕ: если изображение схемы не является правильным (контакты не являются правильными), знайте, что оно правильно в реальной жизни, это то, что я получаю за то, что делаю быстрый макет и публикую его в 1:00 УТРА
#include "DHT.h";
#define DHTTYPE DHT22 // DHT Type is DHT 22 (AM2302)
#define DHTPIN 7 // DHT-22 Output Pin connection
#define trigPin 5
#define echoPin 6
#define beepPin 12
#define scalingfactor 10
#define blueLed 11
#define ledPin2 10
float hum; // Сохраняет значение влажности в процентах
float temp;
float soundsp;
float soundum;
DHT dht(DHTPIN, DHTTYPE); // Инициализировать датчик DHT для обычного Arduino 16 МГц
int centi = 0;
const long erval = 500;
unsigned long previous = 0;
unsigned long lastduration = 0;
unsigned long duration = 0; //время, необходимое звуку для возврата
unsigned long maxtime = 2000;
unsigned long i = 1; //переменная для определения фактического расстояния
unsigned long time2 = 0;
unsigned long time1 = 0;
void setup() {
Serial.begin (9600);
dht.begin(); //запуск датчиков влажности и температуры
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(beepPin, OUTPUT);
pinMode(blueLed, OUTPUT);
}
void calculate(){
// Вычислить скорость звука в М/С в соответствии с температурой
soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
// Конвертировать в cm/us
soundum = soundsp / 10000;
}
void logdistance() {
digitalWrite(trigPin, HIGH); // отправить звуковой сигнал
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // stop sound signal
duration = pulseIn(echoPin, HIGH); // listen for sound signal
centi = (duration* soundum)/2; // определить задержку звукового сигнала в одном направлении
maxtime = scalingfactor * centi; // изменить max time в соответствии с расстоянием до предыдущего объекта
}
void beep() {
digitalWrite(beepPin, HIGH); // включите вывод звукового сигнала (или вывод светодиода).
delay(60);
logdistance(); // снова запускаем функцию log distance, чтобы получить точные данные
if (time2 - time1 < 30) {
delay((60 - (time2 - time1)));
}
digitalWrite(beepPin, LOW); // выключить звуковой сигнал (или светодиод)
i = 1;
while (1) {
if (i % 60 == 0) {
logdistance(); // запустите мою функцию log distance
}
delay(1);
++i; // добавьте единицу к i, чтобы сообщить, что мы записали расстояние
if (i >= maxtime) {
break;
}
}
}
void BlinkBlue (int interval){
static long prevMill = 0;
if (((long)millis() - prevMill) >= interval){
prevMill = millis();
digitalWrite(blueLed, !digitalRead(blueLed));
}
}
void temps(){
hum = dht.readHumidity(); // Получить значение влажности
temp= dht.readTemperature(); // Получить значение температуры
}
void loop() {
BlinkBlue(500);
beep();
temps();
calculate();
//print results
Serial.print (duration);
Serial.print("c. ");
Serial.print(centi);
Serial.print(" ");
Serial.print(temp);
Serial.println(" ");
}
@willbill, 👍1
Обсуждение0
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Глобальные переменные занимают много места в динамической памяти.
- (Код ультразвукового датчика: такого файла или каталога нет)
- rfid_default_keys проверить с помощью RC522
- Команда strtok() с Serial связью
Начните с примера " BlinkWithoutDelay` и перейдите оттуда., @Majenko
вы хотите сказать, что мне нужно сохранить журнал моих светодиодных миганий? Светодиод мигает и гаснет при обнаружении объекта. не помешает ли это процессу измерения расстояния?, @willbill
извините еще раз - определенно новичок в этом деле: я, вероятно, не беру в руки то, что вы кладете, @willbill
В IDE посмотрите на меню File -> Examples. Там где-то есть один под названием "BlinkWithoutDelay". Это научит вас, как сделать ваше светодиодное мигание "неблокирующим" образом, чтобы они не мешали друг другу., @Majenko
итак, я внес несколько изменений в проект. Я обновил саму проблему., @willbill
Посмотрите на “BlinkWithoutDelay” и примените эту логику к обоим светодиодам., @Edgar Bonet