Создание активного заднего крыла на радиоуправляемой машине
Я пытаюсь создать активное заднее крыло для радиоуправляемой машины
Я планирую использовать ИК-датчик скорости, размещенный на одном из задних колес автомобиля, для измерения скорости, которая затем будет перемещать крыло с помощью серводвигателя выше желаемой скорости
ЖК-дисплей будет отображать скорость и активировано или деактивировано крыло
У меня проблема с моим кодом, у меня ошибка "RPM" не был объявлен в этой области
полный код ниже:
#include <timer.h>
Timer timer;
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Wire.h>
Servo myservo;
LiquidCrystal_I2C lcd(0x27,16,2);// создать экземпляр ЖК-дисплея I2C 16x2 с адресом 0x27
const int LM393 = 2;
int counter = 0;
void setup() {
// поместите сюда код установки для однократного запуска:
Serial.begin(9600);//Запуск последовательного монитора
lcd.init();// инициализируем ЖК-дисплей
myservo.attach(9, 544, 1200);// присоединяет сервопривод к контакту 9 к объекту сервопривода
attachInterrupt(digitalPinToInterrupt(LM393), count, RISING);
Serial.begin(115200);
timer.setInterval(1000);
timer.setCallback(RPM);
timer.start();
}
void count() {
counter++;
}
void RPM();{
Serial.printIn(counter * 60);
}
{
pinMode(8, OUTPUT);//определяем контакт 8 как выход для зеленого светодиода
pinMode(12, OUTPUT);//определяем пин 12 как выход для красного светодиода
}
/// основная программа
void loop() {
timer.update();
//проверить скорость двигателей и активировать сервопривод, если выше порога
activateDRS();
}
void activateDRS(){
int pos = 0;//определяем переменную pos для позиции
// сервопривода
int RPM;//определяем еще одну переменную и устанавливаем ее равной функции
//перемещаем сервопривод в его активное положение, когда число оборотов достигает желаемого значения
if(RPM >= X){
for(pos = 60; pos>=0; pos-=1) // изменяется от 0 градусов до 60 градусов
{ // с шагом в 1 градус
myservo.write(pos);// сообщаем сервоприводу перейти в позицию в переменной 'pos'
digitalWrite(8, HIGH);
digitalWrite(12, LOW);
delay(15);// ждем 15 мс, пока сервопривод не достигнет позиции
lcd.setCursor(0,1);
lcd.print("DRS: ON ");
break;// разрешить программе выйти после достижения положения сервопривода
}
// сообщаем пользователю, что система DRS включена
Serial.println("DRS: ON");
}
if(RPM < X){
for(pos = 0; pos <= 60; pos += 1)// переходит от 900 градусов к 0 градусам
{
myservo.write(pos);// сообщаем сервоприводу перейти в позицию в переменной 'pos'
digitalWrite(8, LOW);
digitalWrite(12, HIGH);
delay(15);// ждем 15 мс, пока сервопривод не достигнет позиции
lcd.setCursor(0,1);
lcd.print("DRS: OFF");
break;// разрешить программе выйти после достижения положения сервопривода
}
}
}
@Ben, 👍-1
Обсуждение0
Смотрите также:
- Бесполезная проводка коробки и код
- Почему loop() останавливается?
- Почему сервопривод вращается на 360 градусов?
- Как использовать фотодиод для arduino?
- Как повторить код
- Я пытаюсь совместить автоматический дверной замок с RFID MFRC522 с программой IR REMOTE.
- Почему я не могу контролировать скорость двигателя? (М1 и Е1)
- boxservo работает вопреки коду
Хороший проект. А какой у тебя вопрос?, @chrisl
Добро пожаловать в SE/Arduino! Пожалуйста, пройдите [тур], чтобы узнать, как работает этот сайт, и прочитайте "[спросить]". Затем вернитесь и [отредактируйте] свой пост, чтобы сделать его актуальным вопросом., @the busybee
Удалять ; после оборотов(), @Abel
вы должны объявить RPM, прежде чем использовать его ... ваш вопрос касается общего программирования, а не Arduino, @jsotola