nikopol70 |
30.06.2015 23:06 |
Цитата:
Сообщение от Chubaka885
(Сообщение 331699)
Скетч бы посмотреть. Он у тебя залился без проблем. Библиотеки USBAPI.h, HID.cpp менял?
|
бибилотеки менял, залилось без проблем, прежде чем заливать изучил и отштудировал тему :tease:
скетч вот
PHP код:
#include <avr/sleep.h> #include <avr/power.h>
int ACCPin = 2; // Пин АСС int sleepStatus = 0; // Переменная для хранения статуса (спим, проснулись) - не используется в коде
#define pinKIS1 7 // питание HUB KIS #define pinIsoAmp 6 // питание ISOAmp #define relePinTablet 10 // OTG + датчик холла #define relePinAmp 9 // remote Усилителя, Антены #define pinRearCam 5 // питание камеры заднего хода #define ONKIS 100 // время включения KIS, isoAmp #define ONTablet 2000 // время включения планшета #define ONAmp 4000 // время включения Усилителя, Антены RemoteAmp #define OFFKIS 10000 // время выключения KIS #define OFFTablet 5000 // время выключения планшета #define OFFAmp 4000 // время выключения Усилителя, Антены
unsigned long duration, millisold, off = 0; boolean stateACC, relestate1, relestate2, relestate3 = 0;
int analogPin=A0; //пин для резистивных кнопок int data; int data1 = 0; int flag = 0; unsigned long eventTime = 0;
void wakeUpNow() // Прерывание сработает после пробуждения { if (sleepStatus) // Если мы спали, { sleep_disable(); // то первое, что нужно сделать после просыпания - выключить спящий режим sleepStatus = 0; // В переменную заносим статус бодрствования detachInterrupt(1); // Выключаем прерывание - при нормальном режиме wakeUpNow() не будет вызываться } }
void setup() { pinMode(ACCPin, INPUT); attachInterrupt(1, wakeUpNow, FALLING); // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow pinMode(pinKIS1, OUTPUT); pinMode(pinIsoAmp, OUTPUT); pinMode(relePinTablet, OUTPUT); pinMode(relePinAmp, OUTPUT); pinMode(pinRearCam, OUTPUT); Serial.begin(9600); }
void sleepNow() // Функция увода ардуины в спячку. { set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Здесь устанавливается режим сна sleep_enable(); // Включаем sleep-бит в регистре mcucr. Теперь возможен слип attachInterrupt(1, wakeUpNow, FALLING); // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow при появлении низкого уровня на пине 2 sleepStatus = 1; // В переменную заносим статус сна sleep_mode(); // Здесь устройство перейдет в режим сна!!! //-------------------------ПОСЛЕ ПРОСЫПАНИЯ ВЫПОЛНЕНИЕ КОДА ПРОДОЛЖИТСЯ ОТСЮДА!!!--------------------------// }
void loop() { Power(); Knopki(); delay(5); }
void Power() { if (!digitalRead(ACCPin)&&stateACC) { stateACC=0; duration = millis(); } if (digitalRead(ACCPin)&&!stateACC) { stateACC=1; off = millis(); } if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONKIS) { digitalWrite(pinKIS1, HIGH); digitalWrite(pinIsoAmp, HIGH); relestate1 = 1; millisold = millis(); } if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONTablet) { digitalWrite(relePinTablet, HIGH); relestate2 = 1; millisold = millis(); } if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONAmp) { digitalWrite(relePinAmp, HIGH); relestate3 = 1; millisold = millis(); } if(digitalRead(ACCPin) && stateACC && millis () -off> OFFKIS) { Remote.pause();// нажимаем пузу! Remote.clear(); digitalWrite(pinKIS1, LOW); digitalWrite(pinIsoAmp, LOW); digitalWrite(pinRearCam, LOW); relestate1 = 0; millisold = millis(); Serial.end(); delay(100); sleepNow(); } if(digitalRead(ACCPin) && stateACC && millis ()-off > OFFTablet) { digitalWrite(relePinTablet, LOW); relestate2 = 0; millisold = millis(); } if(digitalRead(ACCPin) && stateACC && millis ()-off > OFFAmp) { digitalWrite(relePinAmp, LOW); relestate3 = 0; millisold = millis(); } }
void Knopki() { data=analogRead(analogPin);
if(data>=950 && data1 != 0 && flag <= 1) { Serial.print("<release:"); Serial.print(data1); Serial.print(">"); data1 = 0; flag = 0; delay(10); }
if(data>=950) { eventTime = millis(); }
if(data<=949 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800) { flag = 2; if(millis()-eventTime <= 60) data1 = data; }
if(data>=950 && flag == 2) { Serial.print("<click:"); Serial.print(data1); Serial.print(">"); flag = 0; delay(10); }
if(data<=949 && flag == 2 && millis()-eventTime>800) { Serial.print("<hold:"); Serial.print(data); Serial.print(">"); data1 = data; flag = 1; delay(10); } }
|