Ви не увійшли.
Підкажіть а піни сервоприводу я правильно розташував?
Сервопривод Micro Servo 9G
-красний - VIN
-коричневий - GMD
-жовтий - D4
Якщо їх ніхто навмисне не перепаював, то правильно: robojax-servo-sg90_datasheet.pdf. Навряд чи він би взагалі рухався при неправильному підключенні.
Впевніться, що обрана в IDE частота MCU відповідає вашому Arduino Nano (8 чи 16 МГц).
Запустіть демку (приклад) для Servo, що йде в бібліотеці. Тільки ардуіна і серва, без фоторезистора. Працює?
mohax1685 пише:Так при першому освітленні він в один бік повертається і назад, а потім при другому освітленні він повертаєтся в інший бік і теж назад
Ну то воно приблизно так і працює https://wokwi.com/projects/436748234276620289
ніякогомалслає в одну сторону
немає
Підкажіть а піни сервоприводу я правильно розташував?
Сервопривод Micro Servo 9G
-красний - VIN
-коричневий - GMD
-жовтий - D4
Ага, я здається здогадався. Напишіть в discord, man0vvar
Отправил запрос в друзья roman_80791
при подачі живлення нічого не повинно обертатись, тілько після ліхтарика наведеного на фоторезистр, він обертаеється в одну сторону і повертається назад, та при наведенні світла в другий раз, він повинен обертатись в іншу сторону і ставати назад
Ось такий опис і потрібно надавати в самому першому повідомленні, при описі проблеми.
і нічого не працює
"Нічого не працює" - це якщо навіть індикатор живлення не світиться.
#include <Servo.h>
static constexpr int threshold = 700;
static constexpr int hist = 50;
Servo myservo;
void setup()
{
Serial.begin(9600);
myservo.attach(4);
myservo.write(60);
}
static bool alight = false;
static bool dir = false;
void loop()
{
int val = analogRead(A3);
Serial.println(val);
if (alight) {
alight = val > threshold - hist;
} else {
alight = val > threshold + hist;
if (alight) {
myservo.write((dir = !dir) ? 0 : 120);
delay(1000);
myservo.write(60);
}
}
delay(100);
}
Симуляція. Але в цьому симуляторі у фотоелемента вихід інверсний: чим більше освітлення, тим менший рівень він видає. У вашій схемі навпаки, так що скетч має працювати правильно. Величину порогового значення (threshold) та гістерезису (hist) підбирайте експериментально.
Ага, я здається здогадався. Напишіть в discord, man0vvar
А кінцева мета яка? Якщо навчитись - ну, є симулятор, можна гратись, щось міняти. В симуляторі працює ж.
По кінцевому результаті воно повинно працювати так: к ардуіно підключенний сервопривід і фоторезистор, при подачі живлення нічого не повинно обертатись, тілько після ліхтарика наведеного на фоторезистр, він обертаеється в одну сторону і повертається назад, та при наведенні світла в другий раз, він повинен обертатись в іншу сторону і ставати назад, я вже голову ломаю цілий день, я придбав цей скетч і схему по збиранню, і нічого не працює
Так при першому освітленні він в один бік повертається і назад, а потім при другому освітленні він повертаєтся в інший бік і теж назад
Ну то воно приблизно так і працює https://wokwi.com/projects/436748234276620289
ніякого
малслає в одну сторону
немає
Цей привід наче не вміє маслати в одну сторону, він повертається на вказаний кут.
Все так зробив але сервопривід просто знову малслає в одну сторону, мож я не так розьми підключаю або інструкція не правильна?
Здається, можна спростити:
if (state != dir) {
if (state) {
myservo.write(120);
delay(1000);
myservo.write(60);
} else {
myservo.write(0);
delay(1000);
myservo.write(60);
}
dir = state;
}
А prestate не потрібна.
я спробував цей код що Ви дали, видало во це:
Воно ж написало вам, в якому рядку що не так. Приберіть ту зайву помилкову дужку:
Serial.println(val);
Так при першому освітленні він в один бік повертається і назад, а потім при другому освітленні він повертаєтся в інший бік і теж назад
mohax1685 пише:Я прикрипив файл, там є внутрі все щоб розібратись
Із тих картинок в архіві зовсім не зрозуміло, що це за пристрій, і як він має працювати.
mohax1685 пише:підкажіть будь ласка що можно спробувать?
Якщо вгадав, що при появі освітлення має повернутись в один бік і назад, а при зникненні освітлення має повернутись в інший бік і назад, то має працювати щось типу такого:
#include <Servo.h> Servo myservo; void setup() { myservo.attach(4); pinMode(A3, INPUT); myservo.write(60); Serial.begin(9600); } bool prestate; bool dir; void loop() { int val = analogRead(A3); Serial.println(val)); bool state = val > 700; if (state != prestate) { if (state && !dir) { myservo.write(120); delay(1000); myservo.write(60); dir = true; } else if (!state && dir) { myservo.write(0); delay(1000); myservo.write(60); dir = false; } prestate = state; } delay(100); }
(Не компілював, не перевіряв).
Але ж тут нема ніякого гістерезису. На граничних значеннях освітлення буде тіліпатись туди-сюди.
я спробував цей код що Ви дали, видало во це:
C:UsersРоманAppDataLocalTemp.arduinoIDE-unsaved2025617-11184-18ogwsr.rp5isketch_jul17asketch_jul17a.ino: In function 'void loop()':
C:UsersРоманAppDataLocalTemp.arduinoIDE-unsaved2025617-11184-18ogwsr.rp5isketch_jul17asketch_jul17a.ino:18:22: error: expected ';' before ')' token
exit status 1
Compilation error: expected ';' before ')' token
Я прикрипив файл, там є внутрі все щоб розібратись
Із тих картинок в архіві зовсім не зрозуміло, що це за пристрій, і як він має працювати.
підкажіть будь ласка що можно спробувать?
Якщо вгадав, що при появі освітлення має повернутись в один бік і назад, а при зникненні освітлення має повернутись в інший бік і назад, то має працювати щось типу такого:
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(4);
pinMode(A3, INPUT);
myservo.write(60);
Serial.begin(9600);
}
bool prestate;
bool dir;
void loop()
{
int val = analogRead(A3);
Serial.println(val));
bool state = val > 700;
if (state != prestate) {
if (state && !dir) {
myservo.write(120);
delay(1000);
myservo.write(60);
dir = true;
} else if (!state && dir) {
myservo.write(0);
delay(1000);
myservo.write(60);
dir = false;
}
prestate = state;
}
delay(100);
}
(Не компілював, не перевіряв).
Але ж тут нема ніякого гістерезису. На граничних значеннях освітлення буде тіліпатись туди-сюди.