/*Прошивка для подключения Witty Cloud module к KT контроллерам мотор-колес, для управления без KT_LCD3 */
/*Раздельные настройки для двух KT контроллеров */
/*Кнопки "+" и "-" , срабатывание по отпусканию кнопок*/
/*Кратковременное нажатие (горит красный светодиод)- соответствующее изменение уровня PAS */
/*Нажатие средней длительности (горит зеленый светодиод)- соответствующее изменение ограничения батарейного тока (если C5 >= 3) */
/*Длительное нажатие "-"(горит синий светодиод) - включение/выключение света (если контроллер это поддерживает) */
/*Длительное удержание"+" (мигание синего светодиода )- подает контроллерам команду "сопровождение" */
#define PIN 9 // кнопка подключена сюда (PIN --- КНОПКА --- GND)
int incomingByte = 0;
#include "GyverButton.h"
#include <TimerMs.h>
GButton butt1(PIN);
int period = 200;
int times;
const int REDled = 7; // красный светодиод // зеленый светодиод
const int BLUEled = 6; // синий светодиод
int assist = 3;
unsigned long time_now = 0;
TimerMs tmr(100, 1, 0);
void setup() {
Serial.begin(9600);
tmr.setPeriodMode();
// initialize the LED pin as an output:
butt1.setDebounce(50); // настройка антидребезга (по умолчанию 80 мс)
butt1.setTimeout(300); // настройка таймаута на удержание (по умолчанию 500 мс)
butt1.setClickTimeout(600); // настройка таймаута между кликами (по умолчанию 300 мс)
butt1.setType(HIGH_PULL);
butt1.setDirection(NORM_OPEN);
pinMode(BLUEled, OUTPUT);
pinMode(REDled, OUTPUT);
// initialize the pushbutton pin as an input:
}
/*
void blink(int led, int times) {
if (millis() >= time_now + period) {
int time_now = time_now + period;
for (int p = 0; p <= times; times++) {
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
}
}
};
*/
void loop() {
butt1.tick();
int speedlimit = 60;
int wheel = 20;
int p1 = 255;
int p2 = 0;
byte p3 = 1;
byte p4 = 0;
int p5 = 0;
int c1 = 6;
int c2 = 0;
//int c3 = 3;
int c4 = 0;
int c4s = 60;
int c4p = 60;
int c5 = 10;
int c12 = 4;
int c13 = 0;
int c14 = 3;
int l1 = 2;
int BITE1 = assist;
bitWrite(BITE1, 7, 0);
//int BITE3 = p1;
int BITE4 = wheel;
BITE4 <<= 6;
BITE4 += p2;
bitWrite(BITE4, 5, bitRead(speedlimit, 5));
bitWrite(BITE4, 3, p3);
bitWrite(BITE4, 4, p4);
speedlimit <<= 3;
wheel >>= 2;
int BITE2 = speedlimit + wheel;
c1 <<= 3;
int BITE6 = c1 + c2;
c14 <<= 5;
int BITE7 = c14 + c5;
bitSet(BITE7, 7);
c4 <<= 5;
int BITE8 = c4 + c12;
c13 <<= 2;
int BITE10 = c13;
l1 <<= 6;
int BITE11 = l1 + c4p;
int BITE5 = BITE1 ^ BITE2 ^ p1 ^ BITE4 ^ BITE6 ^ BITE7 ^ BITE8 ^ c4s ^ BITE10 ^ BITE11;
//uint8_t letters[13] = {p5, BITE1, BITE2, p1, BITE4, BITE5, BITE6, BITE7, BITE8, c4s, BITE10, BITE11, 14};
int letters[13] = { p5, BITE1, BITE2, p1, BITE4, BITE5, BITE6, BITE7, BITE8, c4s, BITE10, BITE11, 14 };
if (tmr.tick()){
for (int i = 0; i < 13; i++)Serial.write(letters[i]);
Serial.println(assist);
};
if (butt1.isSingle()) {
assist++;
digitalWrite(REDled, HIGH);
// blink(REDled, assist);
};
if (butt1.isDouble()) {
assist--;
digitalWrite(BLUEled, HIGH);
//blink(BLUEled, assist);
};
if (assist > 5){
assist = 5;
digitalWrite(REDled, HIGH);
delay(3000);
digitalWrite(REDled, LOW);
}
if (assist < 1){
assist = 1;
digitalWrite(BLUEled, HIGH);
delay(3000);
digitalWrite(BLUEled, LOW);
}
digitalWrite(REDled, LOW);
digitalWrite(BLUEled, LOW);
}