Нужна помощь с кодом, SOS

verbosevera
Offline
Зарегистрирован: 05.05.2016

Здраствуйте!

Необходимо, чтобы система работала: два сервопривода, лента из светодиодов с силовым ключом, фоторезистор, Ардуино уно. Нужно чтобы работа светодиодов и сервоприводов зависела от фоторезистора (в темноте ничего не работает, при попадании минимального света на фоторезистор и светодиоды, и сервоприводы начинают одновременно работать). Сервоприводы должны поворачиваться с 0 на 180 с делэем в 1-2сек, светодиоды просто загораются на максимальную мощность (всё снова перестает работать, когда становится темно). Каждый элемент подпитан отдельной батарейкой ( Ардуино - 9v, светодиоды - 6v, сервоприводы - 6v).

Написан код, но система не работает так, как нужно, срабатывают только светодиоды. 

int led = 12; //переменная с номером пина светодиода
 
int ldr = 0; //и фоторезистора
 
#include <Servo.h>
 
Servo myservo, myservo2;
 
void setup() 
 
{
 
pinMode(led, OUTPUT); 
 
myservo.attach (7);
myservo.attach (8);
 
}
 
void loop() 
 
{
 
if (analogRead(ldr) < 100) digitalWrite(led, HIGH);
else digitalWrite(led, LOW); //иначе выключаем
 
  if (analogRead(ldr) < 100) myservo.write(180), myservo2.write(180);
else myservo.write(0), myservo2.write(0); 
  
}
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

1. Оформление текста согласно тутошним правилам. Темы прибиты гвоздиками. :)

2. Кто сказал что "не работает"? Вроде по коду так и должно быть. Перепишете по правилам, станет понятней.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А Вы фигурные скобки точно не забыли?

Может вместо 

 if (analogRead(ldr) < 100) myservo.write(180), myservo2.write(180);
else myservo.write(0), myservo2.write(0); 

надо

 if (analogRead(ldr) < 100) {
    myservo.write(180);
    myservo2.write(180);
} else {
   myservo.write(0); 
   myservo2.write(0); 
}

???

verbosevera
Offline
Зарегистрирован: 05.05.2016
001 int led = 12; 
002 int ldr = 0;
003                                                                                                       
004 #include <Servo.h>                                                                                                 
005 Servo myservo, myservo2;
006                                                        
007 void setup()  
008 {                                          
009                                    
010  pinMode(led, OUTPUT); 
                 
011  myservo.attach (7);
012  myservo.attach (8);                                                
013       
014  }
015  
016  void loop()
017                                                             
018 {                                                                                               
019                                                                                               
020  if (analogRead(ldr) < 100) digitalWrite(led, HIGH);
021  else digitalWrite(led, LOW);
                                                                                                                
022  if (analogRead(ldr) < 100) myservo.write(180), myservo2.write(180);
023  else myservo.write(0), myservo2.write(0); 
024                                                                                                        
025  }                                     
 

Предполагаю, что с самим кодом всё нормально. Прошу предположить другие варианты, тк с этим кодом было много вариаций, не только со скобочками. (А по итогу либо ничего не работало, либо работало совсем не так как нужно)

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

В строке 20 и 21 одна одинёхонькая команда и она может без фигурных скобок быть написано, хотя, это и некрасиво. В строках 22 и 23 у вас несколько команд, которые должны объединиться в одну составную фигурными скобками, и разделитель между командами точка с запятой, никак не просто запятая. Вам же человек написал, вам же компилятор указал на ошибку.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

verbosevera,

во-первых, таки прочитайте правила вставки кода и вставляйте правильно. Так, как Вы вставляете очень трудно работать с кодом (например, скопировать себе в редактор).

Про фигурные скобки - если в Вашей версии библиотеки метод write не void (в моей, например, void) то оно, конечно, на скорость не влияет, но так грамотнее. Впрочем, не хотите - дело Ваше.

Но пока Вы код нормально не вставите, работать с Вами будут только мазохисты.