я думаю, что код простой будет для профи вроде вас всех. Когда свет попадает на фото резистор, то серва поворачивается вправо, если свет пропал, то она опять в центр, если свет попадает опять, то она влево и опять по кругу Да, я копилот использовал
// Подключаем библиотеку для управления сервоприводом
// Создаем объект для сервопривода
Servo servo;
// Задаем номера пинов для фоторезистора и сервопривода
const int photoPin = A0;
const int servoPin = 9;
// Задаем пороговое значение для фоторезистора
const int threshold = 500;
// Задаем углы поворота для сервопривода
const int rightAngle = 90;
const int centerAngle = 0;
const int leftAngle = -90;
// Создаем переменную для хранения текущего угла сервопривода
int currentAngle = centerAngle;
// Создаем переменную для хранения предыдущего состояния фоторезистора
bool previousState = false;
void setup () {
// Устанавливаем скорость передачи данных
Serial.begin (9600);
// Подключаем сервопривод к пину
servo.attach (servoPin);
// Устанавливаем сервопривод в центральное положение
servo.write (centerAngle);
}
void loop () {
// Считываем значение с фоторезистора
int photoValue = analogRead (photoPin);
// Определяем, есть ли свет или нет
bool currentState = photoValue > threshold;
// Проверяем, изменилось ли состояние фоторезистора
if (currentState != previousState) {
// Если изменилось, то меняем угол сервопривода
switch (currentAngle) {
case rightAngle:
// Если сервопривод был повернут вправо, то возвращаем его в центр
currentAngle = centerAngle;
break;
case centerAngle:
// Если сервопривод был в центре, то поворачиваем его влево или вправо в зависимости от того, есть свет или нет
currentAngle = currentState ? leftAngle : rightAngle;
break;
case leftAngle:
// Если сервопривод был повернут влево, то возвращаем его в центр
currentAngle = centerAngle;
break;
}
// Передаем новый угол сервоприводу
servo.write (currentAngle);
// Сохраняем текущее состояние фоторезистора
previousState = currentState;
// Выводим информацию на монитор порта
Serial.print ("Photo value: ");
Serial.print (photoValue);
Serial.print (" | Servo angle: ");
Serial.println (currentAngle);
}
// Делаем небольшую паузу
delay (100);
}
Комментарии: 86
Ivan
Зажигалкой надо
Leytenant
Экстра помощь К сожалению ничем помочь не могу А сколько платишь? На шаурму хватит?
Kirill
1к
Leytenant
5 шаурм, многа..
Kirill
Подорожала шаурма нынче
Leytenant
180р мини порция Классическая
Anonim
Гпт 4 может помочь
Kirill
Да я пытался, не тот код выдает
Anonim
Поняв
Anonim
соглашайся;)
Leytenant
Я не против
Anonim
У меня есть
Kirill
Я вам в личку напишу, если готовы помочь сейчас?
Leytenant
Извини, у меня знаний нет
Kirill
Понимаю
Anonim
что тебе тут мешает написать? Может кто посмотрит и согласиться потратить 15 минут;)
Leytenant
Давай ты
Anonim
Я в нейронку закину, мб поможет 4 от 3.5 отличается чуть, полагаю И не думаю, что ты платил за четверку
Kirill
я думаю, что код простой будет для профи вроде вас всех. Когда свет попадает на фото резистор, то серва поворачивается вправо, если свет пропал, то она опять в центр, если свет попадает опять, то она влево и опять по кругу Да, я копилот использовал
Anonim
А Оан Ну он то-же самое даст Ща попробую на всякий
Anonim
готов потратить 10 минут;) Тут 10 строк кода, максимум.
Kirill
Если это будет работать, то я не отказываюсь заплатить
Anonim
куда что подключено? и как подключен фоторезистор? Схема
Kirill
Серва 9 пин. фоторезистор A7, 5V
Anonim
// Подключаем библиотеку для управления сервоприводом
// Создаем объект для сервопривода
Servo servo;
// Задаем номера пинов для фоторезистора и сервопривода
const int photoPin = A0;
const int servoPin = 9;
// Задаем пороговое значение для фоторезистора
const int threshold = 500;
// Задаем углы поворота для сервопривода
const int rightAngle = 90;
const int centerAngle = 0;
const int leftAngle = -90;
// Создаем переменную для хранения текущего угла сервопривода
int currentAngle = centerAngle;
// Создаем переменную для хранения предыдущего состояния фоторезистора
bool previousState = false;
void setup () {
// Устанавливаем скорость передачи данных
Serial.begin (9600);
// Подключаем сервопривод к пину
servo.attach (servoPin);
// Устанавливаем сервопривод в центральное положение
servo.write (centerAngle);
}
void loop () {
// Считываем значение с фоторезистора
int photoValue = analogRead (photoPin);
// Определяем, есть ли свет или нет
bool currentState = photoValue > threshold;
// Проверяем, изменилось ли состояние фоторезистора
if (currentState != previousState) {
// Если изменилось, то меняем угол сервопривода
switch (currentAngle) {
case rightAngle:
// Если сервопривод был повернут вправо, то возвращаем его в центр
currentAngle = centerAngle;
break;
case centerAngle:
// Если сервопривод был в центре, то поворачиваем его влево или вправо в зависимости от того, есть свет или нет
currentAngle = currentState ? leftAngle : rightAngle;
break;
case leftAngle:
// Если сервопривод был повернут влево, то возвращаем его в центр
currentAngle = centerAngle;
break;
}
// Передаем новый угол сервоприводу
servo.write (currentAngle);
// Сохраняем текущее состояние фоторезистора
previousState = currentState;
// Выводим информацию на монитор порта
Serial.print ("Photo value: ");
Serial.print (photoValue);
Serial.print (" | Servo angle: ");
Serial.println (currentAngle);
}
// Делаем небольшую паузу
delay (100);
}
Kirill
Ща попробую
Anonim
фоторезюк нужно подключить правильно для начала, как плечо резистивного делителя,
Kirill
Я резистор кинул на землю и a7 На 10к
Anonim
Вот так
Kirill
Так и сделал
Anonim
Ток мне теперь немного стыдно, что я нашего компаньона лишил рублёв, вероятно Ну ладно
Kirill
Я скину 500 руб ему, если всё таки заработает
Anonim
Ага
Anonim
#include
#define servo_pin 9
#define photo_pin A7
Servo servo;
void setup() {
pinMode(photo_pin, INPUT);
servo.attach(servo_pin);
servo.write(0);
delay(1000);
}
bool side = true;
void loop() {
if (analogRead(photo_pin)>500) {
if (side) {
servo.write(-90);
} else {
servo.write(90);
}
//side = !side;
} else {
servo.write(0);
side = !side;
}
}
Anonim
Бля, синтаксис вообще ни о чем Надо ток ознакомиться с базовыми названиями Я с++ вроде знаю
Kirill
Сейчас его попробую Прошлый не хочет работать Просто крутиться
Anonim
500 - может быть +- не 500. Это от твоего фоторезистора, резистора и освещения зависит и нужно подбирать
Kirill
Пробую.
Anonim
что за серва у тебя? Она точно НЕ постоянного вращения? А то там 0 как бы нет;)
Anonim
А че надо