Помогите скрестить 2 скетча новачку
- Войдите на сайт для отправки комментариев
Пнд, 06/03/2017 - 01:07
Здравствуйте)
В програмировании я вначале с новачков)) Задумка - пульт на руль, кнопки резистивные. В интернете перерыл очень много информации, люди такое делают вот только черезчур заумно для меня.
Помогите плиз скрестить скетчи.
Вот нашкрябал 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);
}
А сами-то пробовали? В чём затык? Где скетч?
Или не пробовали? Если второе. то Вам в другой раздел.
две недели уже пробую. не компелируеться скетч, получаеться что один скетч закрывает другой и пишет что не обявленная область
#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); }Навеоне ошибка в 12-ой строке? Хотя, не знаю. Я не видел ни скетча, ни сообщения компилятора.
Функция DoubleClick определена в 35 строке, а используется в 19-ой. Перенесите определение выше использования. Это касается всех функций (если вдруг чего ещё вылезет на эту тему).
SimpleOneButton__start:34: error: expected unqualified-id before 'if'
Что делает строка 33 ВНЕ всякой функции? Вне функция никакого кода быть не должно. Исправляйте.