Вот просто из празного любопытства, открыл три случайные темы и везде одно и тоже.
Я программирую по профессии уже 9 лет, завершено более 15 крупных проектов , тут попался набор ардуино,ребёнок сотрудника выиграл на конкурсе, решил попробовать, разобраться.
А тут похоже, единственное, что могут некоторые отписавшиеся выше - это самоутверждаться за счёт незнания других в этой узкой теме, при этом , уверен за рамками форума представляют из себя амебное состояние общественной еденицы.
Для которых с клеймом blocked закончится и значимая часть существования.
- Вывод датчика показал тоже самое. Pir показывает L, но операция все равно выполнялась.
- Плата была просто нагруженна сильно.
Даже с добавлением переменной для проверки обнаружения и ограничения до 1 раза, решение не давало.
if (motionState == HIGH && !motionDetected)
#include <Servo.h>
#define servoPin 9
#define motionSensorPin 6
#define piezoPin 11
#define ledPin 13
Servo myservo;
int pos = 0;
int motionState = LOW;
bool servoStopped = false;
bool motionDetected = false;
const int melodyNotes[] = {392, 392, 392, 311, 466, 392, 311, 466, 392, 587, 587, 587, 622, 466, 369, 311, 466, 392, 784, 392, 392, 784, 739, 698, 659, 622, 659, 415, 554, 523, 493, 466, 440, 466, 311, 369, 311, 466, 392};
const int melodyTimes[] = {350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 250, 100, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 750};
int melodyLength = 39;
int currentNote = 0;
void setup() {
myservo.attach(servoPin);
pinMode(motionSensorPin, INPUT);
pinMode(piezoPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Скетч запущен");
}
void loop() {
motionState = digitalRead(motionSensorPin);
if (motionState == HIGH && !motionDetected) {
Serial.println("Обнаружено движение!");
turnServo(90);
blinkLED(4);
playMelody();
turnServo(180);
delay(1000);
motionDetected = true;
}
if (servoStopped && motionState == LOW) {
delay(5000);
servoStopped = false;
motionDetected = false;
}
delay(100);
}
void turnServo(int angle) {
int step = 1;
if (angle < pos) {
step = -1;
}
while (pos != angle) {
pos += step;
myservo.write(pos);
delay(15);
}
servoStopped = true;
}
void blinkLED(int numTimes) {
for (int i = 0; i < numTimes; i++) {
digitalWrite(ledPin, HIGH);
delay(250);
digitalWrite(ledPin, LOW);
delay(250);
}
}
void playMelody() {
for (int i = 0; i < melodyLength; i++) {
tone(piezoPin, melodyNotes[i]);
delay(melodyTimes[i]);
noTone(piezoPin);
delay(melodyTimes[i]);
}
}
Прошу модераторов закрыть тему или удалить.
Данный ресурс добавлю в чёрный список и “порекомендую” знакомым и 150 к подписчикам своей группы в telegram. 