Сайт "Электронщики" - скорая помощь для радиолюбителей. Здесь вы можете задавать вопросы и получать на них ответы от других пользователей.
Грамотно отвечайте, голосуйте, задавайте вопросы и т.о. зарабатывайте себе рейтинг.

Проверте правильность работы кода для Arduino

+10 голосов
//Получаем сигнал с локатора.эта программа реагирует на наличие сигнала на входе и индицирует это с помощью свето-диода
//задаем константы:
  const int lokatorPin = 3;// номер входа локатора
  const int ledPin =  13;// номер выхода светодиода если делать на 7ми сегментном иню то будет больше констант на каждый вывод
//переменные НУЖНЫ ИЛИ НЕТ ХРЕН ЗНАЕТ В ДАННОЙ ПРОГРАММЕ НЕНУЖЕН
int buttonState = 0;         // переменная может  храненить состояния
void setup() {
  pinMode(lokatorPin, INPUT);// 3й вход
  pinMode(ledPin, OUTPUT);//13й вывод будет выходом
  }
  void loop(){
    // считываем значения с входа ВОЗМОЖНО НЕ НУЖЕН :
   buttonState = digitalRead(lokatorPin);
 
   // проверяем наличие сигнал на 3ем входе
   // если есть сигнал, то buttonState будет HIGH(наверное):
   if (buttonState == HIGH) {
     // включаем светодиод    
     digitalWrite(ledPin, HIGH);
}
else {
   // выключаем светодиод
   digitalWrite(ledPin, LOW);
   }
   }

 

19 Июнь, 13 от arteswow (500 баллов) в категории Микроконтроллеры
редактировать 19 Июнь, 13 от viper

1 Ответ

+2 голосов
 
Лучший ответ
Не ардуинщик, но все написано правильно, благо задача до тупого проста. Единственный момент (не знаю, знаете или нет) - у вас же третий пин реагирует на цифровой сигнал, то есть подавать на него какой-нибудь маленький по амплитуде аналоговый сигнал не получится
19 Июнь, 13 от Looongcat (34,210 баллов)
выбран 19 Июнь, 13 от viper
но (конечно кого я обманываю, умный код и псевдокод под ардуино вообще несовместимые понятия) я бы заменил:

const int lokatorPin = 3;// номер входа локатора
const int ledPin =  13;// номер выхода светодиода если делать на 7ми

на:
#define lokatorPin 3
#define ledPin 13

Или если так хотите именно переменные - сделайте хотя бы unsigned char (синоним - uint8_t), ибо в коде чувствуется типичное ПКшное распиздяйство - хранить однобайтное число в двухбайтной переменной на контроллере с 8-битным ядром это кощунство
плюс если вы не собираетесь далее расширять функционал "программы", то проще написать (если компилятор схавает):

digitalWrite(ledPin,digitalRead(lokatorPin));

вместо всего содержимого суперцикла