Создание активного заднего крыла на радиоуправляемой машине

Я пытаюсь создать активное заднее крыло для радиоуправляемой машины

Я планирую использовать ИК-датчик скорости, размещенный на одном из задних колес автомобиля, для измерения скорости, которая затем будет перемещать крыло с помощью серводвигателя выше желаемой скорости

ЖК-дисплей будет отображать скорость и активировано или деактивировано крыло

У меня проблема с моим кодом, у меня ошибка "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;// разрешить программе выйти после достижения положения сервопривода
      }
    }
}

, 👍-1

Обсуждение

Хороший проект. А какой у тебя вопрос?, @chrisl

Добро пожаловать в SE/Arduino! Пожалуйста, пройдите [тур], чтобы узнать, как работает этот сайт, и прочитайте "[спросить]". Затем вернитесь и [отредактируйте] свой пост, чтобы сделать его актуальным вопросом., @the busybee

Удалять ; после оборотов(), @Abel

вы должны объявить RPM, прежде чем использовать его ... ваш вопрос касается общего программирования, а не Arduino, @jsotola