ошибка "was not declared in this scope"

Viktor911
Offline
Зарегистрирован: 04.05.2018
ругается на "&results" в 3 строке -  if(irrecv.decode(&results)). дословно "'results' was not declared in this scope
поскажите что имеется ввиду? я новичек если че)
 
 
void loop() 
{
 if(irrecv.decode(&results))
 
{
 if(results.value==IR_XunJi_Mode)
 { 
 while(IR_XunJi_Mode)
 {
  XunJi_Mode();
 }
 }
  if(results.value==IR_Self_Control)
{
  while(IR_Self_Control)
  {
    Self_Control(); }
  }
  if(results.value==IR_IR_Control)
  {
   while(IR_IR_Control)
   { 
     IR_Control(); }
   }
   if(results.value==IR_Bluetooth_Control)
   {
     while(IR_Bluetooth_Control)
   {
Bluetooth_Control();
   }
   }
irrecv.resume();
}
delay(10);
}
 
b707
Offline
Зарегистрирован: 26.05.2017

выложите код целиком, по этому обрывку не ясно, обьявлена ли переменная results

и вставьте код как положено.

Viktor911
Offline
Зарегистрирован: 04.05.2018


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

Вам же сказали "как положено". Идите в ЭТОТ раздел форума и ищите там тему про вставку кода, если сами не в состоянии слово code в шапке окна сообщения разглядеть.

b707
Offline
Зарегистрирован: 26.05.2017

я ж вам написал - вставьте код правильно! Кому нафик нужно читать эту простыню?

По делу - так и не увидел, где у вас обьявлена переменная results. Похоже, что нигде. Поэтому и ошибка.

Сдается мне, что вы этот код либо где-то скопировали неправильно, либо собрали из двух-трех других, плохо понимая, что вы делаете.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Viktor911 пишет:

"'results' was not declared in this scope поскажите что имеется ввиду?

https://translate.google.ru

Viktor911 пишет:

я новичек если че)

https://goo.gl/8yaYJP

Viktor911
Offline
Зарегистрирован: 04.05.2018

абсолютно верно вам сдается. написал с книжки к машине, плохо понимая что к чему. то что данная команда не возвращает в начало ясно, где не дописал? вроде все перепроверил, ничего не пропустил.

b707
Offline
Зарегистрирован: 26.05.2017

Viktor911 пишет:

то что данная команда не возвращает в начало

э-э-э, похоже у тебя еще и с английским проблемы, и в программировании ты не сечешь. Тогда я даж не знаю, чем тебе помочь. "Даннная команда" никуда возвращать не должна. Тебе компьютер пишет, что переменнная results не обьявлена - но, похоже, для тебя это ничего не значит.

Я для тебя вижу три варианта:

1) Если прокатит - скопировать код еще раз и хорошенько проверить, чтоб ничего не потерять.

2) Начать изучение программирования с более простоых программ - если не бросишь, через полгода-год дорастешь до уровня этого кода.

3) Забить на это дело

Viktor911
Offline
Зарегистрирован: 04.05.2018

#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define RECV_PIN 12
IRrecv irrecv(RECV_PIN);
#define IR_Go 0x00ff629d
#define IR_Back 0x00ffa857
#define IR_Left 0x00ff22dd
#define IR_Right 0x00ffc23d
#define IR_Stop 0x00ff02fd
#define IR_Servo_L 0x00ff6897
#define IR_Servo_R 0x00ff9867
#define IR_Speed_UP 0x00ffb04f
#define IR_Speed_DOWN 0x00ff30cf
#define IR_XunJi_Mode 0x00ff18e7
#define IR_Self_Control 0x00ff7a85
#define IR_IR_Control 0x00ff10ef
#define IR_Bluetooth_Control 0x00ff38c7
#define IR_ESC 0x00ff52ad
//////////////////
#define SensorLeft 6
#define SensorMiddle 9
#define SensorRight 11
unsigned char SL;
unsigned char SM;
unsigned char SR;
int inputPin=A0;
int outputPin=A1;
unsigned char Bluetooth_val;
LiquidCrystal_I2C lcd(0x27,16,2);
#define Lpwm_pin 5
#define Rpwm_pin 10
int pinLB=2;
int pinLF=4;
int pinRB=7;
int pinRF=8;
unsigned char Lpwm_val=250;
unsigned char Rpwm_val=250;
int Car_state=0;
int servopin=3;
int myangle;
int pulsewidth;
unsigned char DuoJiao=60;
void Sensor_IO_Config()
{
  pinMode(SensorLeft,INPUT);
  pinMode(SensorMiddle,INPUT);
  pinMode(SensorRight,INPUT);
}
void Sensor_Scan(void)
{
  SL = digitalRead(SensorLeft);
  SM = digitalRead(SensorMiddle);
  SR = digitalRead(SensorRight);
}
void servopulse(int servopin,int myangle)
{
  pulsewidth=(myangle*11)+500;
  digitalWrite(servopin,HIGH);
  delayMicroseconds(pulsewidth);
  digitalWrite(servopin,LOW);
  delay(20-pulsewidth/1000);
}
void Set_servopulse(int set_val)
{
  for(int i=0;i<=10;i++)
  servopulse(servopin,set_val);
  }
void M_Control_IO_config(void)
{
  pinMode(pinLB,OUTPUT);
  pinMode(pinLF,OUTPUT);
  pinMode(pinRB,OUTPUT);
  pinMode(pinRF,OUTPUT);
  pinMode(Lpwm_pin,OUTPUT);
  pinMode(Rpwm_pin,OUTPUT);
}
void Set_Speed(unsigned char Left,unsigned char Right)
{
  analogWrite(Lpwm_pin,Left);
  analogWrite(Rpwm_pin,Right);
}
void advance()
{
  digitalWrite(pinRB,LOW);
  digitalWrite(pinRF,HIGH);
  digitalWrite(pinLB,LOW);
  digitalWrite(pinLF,HIGH);
  Car_state=1;
  show_state();
}
void turnR()
{
  digitalWrite(pinRB,LOW);
  digitalWrite(pinRF,HIGH);
  digitalWrite(pinLB,HIGH);
  digitalWrite(pinLF,LOW);
  Car_state=4;
  show_state();
}
void turnL()
{
  digitalWrite(pinRB,HIGH);
  digitalWrite(pinRF,LOW);
  digitalWrite(pinLB,LOW);
  digitalWrite(pinLF,HIGH);
  Car_state=3;
  show_state();
}
void stopp()
{
  digitalWrite(pinRB,HIGH);
  digitalWrite(pinRF,HIGH);
  digitalWrite(pinLB,HIGH);
  digitalWrite(pinLF,HIGH);
  Car_state=5;
  show_state();
}
void back()
{
  digitalWrite(pinRB,HIGH);
  digitalWrite(pinRF,LOW);
  digitalWrite(pinLB,HIGH);
  digitalWrite(pinLF,LOW);
  Car_state=2;
  show_state();
}
void show_state(void)
{
  lcd.setCursor(0,1);
  switch(Car_state)
  {
    case 1:lcd.print("Go ");Serial.print("\r\n GO");
    break;
    case 2:lcd.print("Back ");Serial.print("\r\n Back");
    break;
    case 3:lcd.print("Left ");Serial.print("\r\n Left");
    break;
    case 4:lcd.print("Right ");Serial.print("\r\n Right");
    break;
    case 5:lcd.print("Stop ");Serial.print("\r\n Stop");
    break;
    default:
    break;
  }
}
void LCD1602_init(void)
{
  lcd.init();
  delay(10);
  lcd.backlight();
  lcd.clear();
}
void Show_V(unsigned char V)
{
  lcd.setCursor(11,0);
  lcd.print("V= ");
  lcd.setCursor(13,0);
  lcd.print(V,DEC);
  Serial.print("\n Speed= ");
  Serial.print(V,DEC);
}
void Show_DuoJiao(unsigned char Jiao)
{
  lcd. setCursor(6,1);
  lcd.print("C= ");
  lcd.setCursor(8,1);
  lcd.print(Jiao,DEC);
  Serial.print("\n JiaoDu= ");
  Serial.print(Jiao,DEC);
}
void Xunji_Mode(void)
{
  lcd.setCursor(0,0);
  lcd.print("Xunji_Mode       ");
  Sensor_Scan();
  if(SM==HIGH)
{
  if(SL==LOW&SR==HIGH)
{
  turnR();
}
else if(SR==LOW&SL==HIGH)
{
  turnL();
}
else
{
  advance();
}
}
else
{
  if(SL==LOW&SR==HIGH)
{
  turnR();  
}
  else if(SR==LOW&SL==HIGH)
  {
    turnL();                
  }
  else
{
  back();
  delay(100);
  stopp();
}
}
}
void Self_Control(void)
{
  int H;
  lcd.setCursor(0,0);
  lcd.print("Self_Ctr       ");
  Show_V(Lpwm_val);
  Set_servopulse(DuoJiao);
  Show_DuoJiao(DuoJiao);
  H=Ultrasonic_Ranging(1);
  delay(300);
  if(Ultrasonic_Ranging(1)<35)
  {
    stopp();
    delay(100);
    back();
    delay(50);
  }
  if(Ultrasonic_Ranging(1)<60)
  {
    stopp();
    delay(100);
    Set_servopulse(5);
    Show_DuoJiao(5);
    int L=ask_pin_L(2);
    delay(300); 
    Set_servopulse(177);
    Show_DuoJiao(177);
    int R=ask_pin_R(3);
    delay(300);


    if(ask_pin_L(2)>ask_pin_R(3))
  {
      back();
  delay(100);
  turnL();
  delay(400);
  stopp();
  delay(50);
  Set_servopulse(DuoJiao);
  Show_DuoJiao(DuoJiao);
  H=Ultrasonic_Ranging(1);
  delay(500);
  }

  if(ask_pin_L(2) <=ask_pin_R(3))
  {
    back();
    delay(100);
    turnR();
    delay(400);
    stopp();
    delay(50);
    Set_servopulse(DuoJiao);
  Show_DuoJiao(DuoJiao);
  H=Ultrasonic_Ranging(1);
  delay(300);
  }
  if(ask_pin_L(2) <35&&ask_pin_R(3)<35)
  {
    stopp();
    delay(50);
    back();
    delay(50);
  }
  }
else
{
  advance();
}
}
int Ultrasonic_Ranging(unsigned char Mode)
{
  int old_distance;
  digitalWrite(outputPin,LOW);
  delayMicroseconds(2);
  digitalWrite(outputPin,HIGH); 
  delayMicroseconds(10);
  digitalWrite(outputPin,LOW);
  int distance=pulseIn(inputPin,HIGH);
  distance=distance/58;
  if(Mode==1)
  {
    lcd. setCursor(11,1);
  lcd.print("H= ");
  lcd.setCursor(13,1);
  lcd.print(distance,DEC);
  Serial.print("\n H= ");
  Serial.print(distance,DEC);
  return distance;
  }
  else return distance;
}
int ask_pin_L(unsigned char Mode)
{
  int old_Ldistance;
  digitalWrite(outputPin,LOW);
  delayMicroseconds(2);
  digitalWrite(outputPin,HIGH); 
  delayMicroseconds(10);
  digitalWrite(outputPin,LOW);
  int Ldistance=pulseIn(inputPin,HIGH);
  Ldistance=Ldistance/58;
  if(Mode==2)
  {
    lcd. setCursor(11,1);
  lcd.print("L= ");
  lcd.setCursor(13,1);
  lcd.print(Ldistance,DEC);
  Serial.print("\n L= ");
  Serial.print(Ldistance,DEC);
  return Ldistance;
  }
  else return Ldistance;
}
int ask_pin_R(unsigned char Mode)
{
  int old_Rdistance;
  digitalWrite(outputPin,LOW);
  delayMicroseconds(2);
  digitalWrite(outputPin,HIGH); 
  delayMicroseconds(10);
  digitalWrite(outputPin,LOW);
  int Rdistance=pulseIn(inputPin,HIGH);
  Rdistance=Rdistance/58;
  if(Mode==3)
  {
    lcd. setCursor(11,1);
  lcd.print("R= ");
  lcd.setCursor(13,1);
  lcd.print(Rdistance,DEC);
  Serial.print("\n R= ");
  Serial.print(Rdistance,DEC);
  return Rdistance;
  }
  else return Rdistance;
}

void IR_Control(void)
{
 
  unsigned long Key;
  lcd.setCursor(0,0);
  lcd.print("IR_Ctr   ");
  while(Key!=IR_ESC)
  {
   if(irrecv.decode(&results))
    {
      Key=results.value;
      switch(Key)
    {
     case IR_Go:advance();
        break;
        case IR_Back:back();
        break;
        case IR_Left:turnL();
        break;
        case IR_Right:turnR();
        break;
        case IR_Stop:stopp();
        break;
 case IR_Servo_L:if(DuoJiao<=180){
  DuoJiao+=10;
  Set_servopulse(DuoJiao);
   Show_DuoJiao(DuoJiao);}
   break;
   case IR_Servo_R:if(DuoJiao-10>=0){
    DuoJiao-=10;
    Set_servopulse(DuoJiao);
    Show_DuoJiao(DuoJiao);}
    break;
    case IR_Speed_UP:if(Rpwm_val+10<=250&&Rpwm_val+10<=250){
      Lpwm_val+=10;Rpwm_val+=10;
      Set_Speed(Lpwm_val,Rpwm_val);
      Show_V(Lpwm_val);
    }
      break;
       case IR_Speed_DOWN:if(Rpwm_val-10>=0&&Rpwm_val-10>=0){
        Lpwm_val-=10;Rpwm_val-=10;
        Set_Speed(Lpwm_val,Rpwm_val);
        Show_V(Lpwm_val);
       }
       break;
       default:
       break;
    }
    irrecv.resume();
    }
  }
lcd.clear();
lcd.setCursor(0,0);
lcd.print("  Wait Signal  ");
stopp();
}
void Bluetooth_Control()
{
  lcd.setCursor(0,0);
  lcd.print("xaxaxaxaxaxaxax");
  if(Serial.available())
{
  Bluetooth_val=Serial.read();
  switch(Bluetooth_val)
  {
     case'U':advance();
      break;
      case'D':back();
      break;
      case'L':turnL();
      break;
      case'R':turnR();
      break;
      case'S':stopp();
      break;
  }
}
}
void setup()
{
  pinMode(servopin,OUTPUT);
LCD1602_init();
M_Control_IO_config();
Set_Speed(Lpwm_val,Rpwm_val);
Set_servopulse(DuoJiao);
pinMode(inputPin,INPUT);
pinMode(outputPin,OUTPUT);
Serial.begin(9600);
lcd.setCursor(0,0);
lcd.print(" Wait Signal ");
stopp();
}

void loop() 
{
 if(irrecv.decode(&results))

{
 if(results.value==IR_XunJi_Mode)
 { 
 while(IR_XunJi_Mode)
 {
  XunJi_Mode();
 }
 }
  if(results.value==IR_Self_Control)
{
  while(IR_Self_Control)
  {
    Self_Control(); }
  }
  if(results.value==IR_IR_Control)
  {
   while(IR_IR_Control)
   { 
     IR_Control(); }
   }
   if(results.value==IR_Bluetooth_Control)
   {
     while(IR_Bluetooth_Control)
   {
Bluetooth_Control();
   }
   }
irrecv.resume();
}
delay(10);
}
Viktor911
Offline
Зарегистрирован: 04.05.2018

молодец, смекнул.)) не прокатит ни один вариант. изучать программирование мне уже поздновато по возрасту)) не потяну. дети учатся в кружке робототехники, но до ардуино еще не дошли. на опережение машину купил, вот и набираю в компе программы, чтобы работали. и детям небольшой задел. потому забить при любом раскладе не прокатит.) в книжке написан текст, который в комп забивался нами вручную. возможно что-то было пропущено. до этой программы с десяток таких же было написано, прокомпилировано, ошибки исправлены и работают. в данной программе 5 функций в 1 программе. т.е. все прошлые собраны в одну. потому и ошибки пошли только в void loop. примерно такая ситуация) благодарю всех за подсказки и нравоучения))

Viktor911
Offline
Зарегистрирован: 04.05.2018

а программирование я проходил в СССР, когда в школе учился. тогда объясняли немного по другому.)) потому твои фразы для мало что значат. а суть боюсь от того не меняется. как я понимаю - когда выполнение программы подходит к концу, то последние строки отправляют в начало, согласно данных в программе. и если какая-то переменная не прописана в начале, то и отправления в начало не произойдет. сбой и ошибка как результат. т.е. в начале программы не была написана переменная, как ты и написал мне. вот только я по другому выразил свою мысль.) не по вашему, научному

b707
Offline
Зарегистрирован: 26.05.2017

Viktor911 пишет:

как я понимаю - когда выполнение программы подходит к концу, то последние строки отправляют в начало, согласно данных в программе. и если какая-то переменная не прописана в начале, то и отправления в начало не произойдет. сбой и ошибка как результат. т.е. в начале программы не была написана переменная, как ты и написал мне. вот только я по другому выразил свою мысль.) не по вашему, научному

Увы, ничего общего.

Начать с того, что твоя программа вообще не выполняется. В языке программирования Си, на котором это написано - все программы сначала компилируются, то есть переводятся в команды, понятные машине. В твоем же случае в программе есть синтаксическая ошибка, поэтому перевод ее на машинный язык невозможен. До выполнения тут еще очень далеко.

Боюсь, что без изучения основ языка не обойтись. Выписывание из книжки программ без понимания смысла - так же полезно, как перерисовывание китайских иероглифов без словаря. На самом деле, если мозги не зачерствели, все это не так и сложно. Основы языка можно освоить за месяц, если постараться. Возраст не помеха. Мне самому около 50-ти, ардуину начал изучать чуть более года назад.

Viktor911
Offline
Зарегистрирован: 04.05.2018

получилось вставить код правильно)