Помогите скрестить 2 скетча новачку

Katroha
Offline
Зарегистрирован: 28.02.2017

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

В програмировании я вначале с новачков)) Задумка - пульт на руль, кнопки резистивные. В интернете перерыл очень много информации, люди такое делают вот  только черезчур заумно для меня.

Помогите плиз скрестить скетчи. 

Вот нашкрябал 2 скетча:

1-й работает, как програмно так и на практике

int analog=0; 


 void setup() 
   
 {       
     pinMode(3, INPUT);  
     pinMode(8, INPUT);     
     pinMode(9, INPUT); 
     pinMode(10, INPUT);  
     pinMode(11, INPUT);  
     pinMode(12, INPUT);  
     Serial.begin(9600);
 } 

 void loop()    
 { 
        
     analog=analogRead(14);                  //считываем сигнал с пина АЦП 
     
                 
     if(analog>775&&analog<790)              // k1 - up
     {
        Serial.println("kn 1");
     
       pinMode(8, OUTPUT);  
       digitalWrite(8,LOW); 
       delay(50);
       pinMode(8, INPUT); 
       delay(200);  
      

        }      
          
      if(analog>338&&analog<350)           //k2 - right
       {  
       Serial.println("kn 2");
      
       pinMode(9, OUTPUT); 
       digitalWrite(9,LOW); 
       delay(50);
       pinMode(9, INPUT); 
       delay(200);

        }

     if(analog>245&&analog<265)            //k3  down
     { 
       Serial.println("kn 3");
    
       pinMode(10, OUTPUT);  
       digitalWrite(10,LOW);
       delay(50); 
       pinMode(10, INPUT);
       delay(200);
      
     } 
   
    
      if(analog>135&&analog<150)      //k4     vol+
     { 
      Serial.println("kn 4");
                                     // для енкодера
       pinMode(11, OUTPUT);
       pinMode(12, OUTPUT); 
       digitalWrite(11, HIGH);
       delay(70);
       digitalWrite(12, HIGH);
       delay(70);
       digitalWrite(11,LOW);    
       delay(70);
       digitalWrite(12,LOW);  
       delay(70);
       pinMode(11, INPUT);
       pinMode(12, INPUT); 
     } 
                  
    if(analog>=0&&analog<50)         //k5  vol-
     { 
        Serial.println("kn 5");
                                     // для енкодера

       pinMode(12, OUTPUT);
       pinMode(11, OUTPUT); 
       digitalWrite(12, HIGH);
       delay(70);
       digitalWrite(11, HIGH);
       delay(70);
       digitalWrite(12,LOW);    
       delay(70);
       digitalWrite(11,LOW);  
       delay(70);
       pinMode(12, INPUT);  
       pinMode(11, INPUT);  

     } 
     
     
 }    


Дальше захотелось долгое и двойное нажатия, начал учить библиотеки и вот получился 2-й скетч:

#include "OneButton.h"

OneButton button(A0, true);



void setup() {
 
   pinMode(13, OUTPUT);      

    button.attachClick(Click);
    button.attachDoubleClick(DoubleClick);
    button.attachLongPressStart(LongPressStart);
    Serial.begin(9600);
} 
  

void loop() {
  
  button.tick();
  delay(10);

  
 } 

void DoubleClick() 
{
  digitalWrite(13, 1);
  delay(1000);
  digitalWrite(13, 0); 
  Serial.println("kn 1");
} 


void Click() 
{
   Serial.println("kn 2");
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
} 


void LongPressStart()
{
   Serial.println("kn 3");
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
   delay(200);
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
}

 

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

А сами-то пробовали? В чём затык? Где скетч?

Или не пробовали? Если второе. то Вам в другой раздел.

Katroha
Offline
Зарегистрирован: 28.02.2017

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


#include "OneButton.h"

OneButton button(A0, true);

int analog=0; 


void setup() {
 
     pinMode(13, OUTPUT);      
     pinMode(3, INPUT);  
     pinMode(8, INPUT);     
     pinMode(9, INPUT); 
     pinMode(10, INPUT);  
     pinMode(11, INPUT);  
     pinMode(12, INPUT);  
    button.attachClick(Click);
    button.attachDoubleClick(DoubleClick);
    button.attachLongPressStart(LongPressStart);
    Serial.begin(9600);
} 
  

void loop() {
       analog=analogRead(14);   //считываем сигнал с пина АЦП 

  button.tick();
  delay(10);

 }  
 
 
  if(analog>775&&analog<790)    // k1 - up
 
void DoubleClick() 
{
  
  digitalWrite(13, 1);
  delay(1000);
  digitalWrite(13, 0); 
  Serial.println("kn 1");
} 


void Click() 
{
   Serial.println("kn 2");
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
} 


void LongPressStart()
{
   Serial.println("kn 3");
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
   delay(200);
   digitalWrite(13, 1);
   delay(200);
   digitalWrite(13, 0);
}

 

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

Навеоне ошибка в 12-ой строке? Хотя, не знаю. Я не видел ни скетча, ни сообщения компилятора.

Katroha
Offline
Зарегистрирован: 28.02.2017
 
 
 
 
 
Arduino: 1.8.0 (Windows 7), Плата:"Arduino Pro or Pro Mini, ATmega168 (5V, 16 MHz)"
 
C:\Users\serg\Desktop\SimpleOneButton__start\SimpleOneButton__start.ino: In function 'void setup()':
 
SimpleOneButton__start:19: error: 'DoubleClick' was not declared in this scope
 
     button.attachDoubleClick(DoubleClick);
 
                              ^
 
C:\Users\serg\Desktop\SimpleOneButton__start\SimpleOneButton__start.ino: At global scope:
 
SimpleOneButton__start:34: error: expected unqualified-id before 'if'
 
   if(analog>775&&analog<790)    // k1 - up
 
   ^
 
Несколько библиотек найдено для "OneButton.h"
 Используется: C:\Users\serg\Documents\Arduino\libraries\OneButton-master
Не используется: C:\Program Files (x86)\Arduino\libraries\OneButton------
exit status 1
'DoubleClick' was not declared in this scope
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Katroha пишет:

SimpleOneButton__start:19: error: 'DoubleClick' was not declared in this scope

Функция DoubleClick определена в 35 строке, а используется в 19-ой. Перенесите определение выше использования. Это касается всех функций (если вдруг чего ещё вылезет на эту тему).

Katroha пишет:

SimpleOneButton__start:34: error: expected unqualified-id before 'if'

Что делает строка 33 ВНЕ всякой функции? Вне функция никакого кода быть не должно. Исправляйте.