Arduino как второй мозг e-bike

atlet
Offline
Зарегистрирован: 08.12.2014

доброе время суток ,

я новичок и только начинаю пробовать писать для arduino

прошу помощи для открытого проекта -

001/* Arduino as a second brain e-bike*/
002 
003const int sensAlarmPin10=10; // sensor capasitive ,infrared , alarm+
004const int sensAlarmPin11=11; // alarm sensor vibratie ,alarm  A2+
005const int sgnalPin4=4; // реле на динамик и фара max
006const int buttonSignalPin5=5; // button signal alarm, liecht 100%+
007const int swAlarmPin6=6;  // вкл режим  alarm
008const int ledAlarmPin7=7; // индикация  режима Alarm (мигание 1 сек)+
009const int swPin8=8; // вкл controler infineon  , magnit sw MK)+
010const int swRemPin9=9; // sw rem ,stop signal NC +
011const int ledPin14=14; // фара podsvetka
012const int ledStopPin15=15; // STOP фара+
013const int sensFPin16=16; // fotoelement
014 
015int value=0;
016 
017int buttonState;
018int InfraredStatus;
019int VibrationStatus;
020int StopStatus;
021int SignalStatus;
022int lightLevel;
023int AlarmStatus;
024 
025void setup()
026{
027 /* initialize ( команда pinMode служит для настройки цифровых портов/контактов платы. в переменная ledPin, ...
028   конфигурируется как вход/выход OUTPUT/INPUT ) pin  as an output:
029    pinMode(Pin , OUTPUT); //Вывод устанавливается как ВХОД
030    digitalWrite(Pin, HIGH ); // устанавливает HIGH (1)+5v/LOW(0), подкл подтягиваю-й резистор (как камутатор) нагрузка через 470 Ом\1кОм
031    digitalRead(Pin, HIGH); считывает значение с цифрового Вывода с результатом HIGH (1)/LOW(0),
032    analogRead (контакты 0-5) value=analogRead(pin);//переменная value=значению напряжения на INPUT/ U=5v шаг 0,0048v(0-1023)
033    аналоговые Выводы ненужно обьявлять как INPUT\OUTPUT */
034    
035  
036  
037 
038   
039pinMode(sgnalPin4, OUTPUT);  //
040pinMode(buttonSignalPin5, INPUT);
041 pinMode(swAlarmPin6, INPUT);
042pinMode(ledAlarmPin7, OUTPUT); // индикация  режима Alarm (мигание 1 сек)
043 pinMode(swPin8, INPUT); //
044 pinMode(swRemPin9, INPUT);
045 pinMode(sensAlarmPin10, INPUT);
046 pinMode(sensAlarmPin11, INPUT);
047 
048pinMode(ledPin14, OUTPUT); // фара ????
049 pinMode(ledStopPin15, OUTPUT); // STOP фара
050 pinMode(sensFPin16, INPUT);
051  
052     }
053 
054void loop()
055 /* бесконечный цикл  здесь присваиваются команды Цифровой ввод/вывод ,digitalRead/digitalWrite */
056{
057 
058 buttonState = digitalRead(swPin8);  //  magnit  sw MK
059 
060 InfraredStatus=digitalRead(sensAlarmPin10);//infrared 10pin
061 
062VibrationStatus=digitalRead(sensAlarmPin11);//vibrate 11pin
063 
064StopStatus=digitalRead(swRemPin9);//STOP фара
065 
066SignalStatus=digitalRead(buttonSignalPin5);
067AlarmStatus=digitalRead(swAlarmPin6);//вкл режим  alarm
068 lightLevel = analogRead(sensFPin16);
069analogWrite(ledPin14, lightLevel);
070 
071if (StopStatus !=LOW) // кнопка тормоза вкл,загорается задний STOP 
072{
073analogWrite(ledStopPin15, value=255);// STOP фара max 
074delay(500);//небольшая защита от "дребезга" контактов кнопки
075      }
076else
077{
078analogWrite(ledStopPin15, value=0);// STOP фара max
079      }
080 if (SignalStatus != HIGH )
081{
082digitalWrite (sgnalPin4,LOW);
083analogWrite(ledPin14, value=0);
084}
085else
086{
087digitalWrite (sgnalPin4,HIGH);
088analogWrite(ledPin14, value=255);
089delay(500);//небольшая защита от "дребезга" контактов кнопки
090     }
091      
092  
093      
094if ( buttonState != HIGH) // magnit sw MK
095 {
096digitalWrite(ledAlarmPin7,HIGH);
097delay(1000); 
098digitalWrite(ledAlarmPin7,LOW); // индикация режима Alarm (мигание 1 сек) Pin=7
099delay(1000);
100 
101     }
102else 
103{
104digitalWrite(ledAlarmPin7, LOW);
105      }
106 
107if (VibrationStatus == HIGH && InfraredStatus == HIGH )
108{
109digitalWrite (sgnalPin4,HIGH);
110delay(10800000);// 60*60*3*1000
111digitalWrite(sgnalPin4, LOW);
112 
113      }
114 
115else
116{
117digitalWrite (sgnalPin4,LOW);
118}
119 
120   void manualTune()
121{
122  lightLevel = map(lightLevel, 300, 800, 0, 255);/*настраивать в ручную Просто меняем 0, 1023 в страке ниже на что-то типа 300-800*/
123lightLevel = constrain(lightLevel, 0, 255);
124}
125 
126}
127    
128   ---------------------------------------------------------------------------------------
129sketch_dec02a.ino: In function 'void loop()':
130sketch_dec02a:124: error: a function-definition is not allowed here before '{' token

суть его в следующем 

- двух уровневая сигнализация 

1) уровень ,дистанционное предупреждение (детектор движения)

2) детектор вибрации вкл алярм .(вперспективе хотелосьбы реализовать идею с звонком на сотовый)

-скрытое вкл контролера - геркон или потайная кнопка 

(вперспективе хотелосьбы реализовать идею с электронным ключём)

- звуковой сигнал

- автоматическое управление габаритным светом с помощью фоторезистора

- поворотные сигнальные огни 

в выложенном скетче компилятор находит в конце  ошибку с фигурной скопкой (121)

как мне ее разрешить ?

спасибо всем, кто проявит интерес к этой работе 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

у тебя скобка лишняя

atlet
Offline
Зарегистрирован: 08.12.2014

если убираю скобки (221  224 )то получаю это

sketch_dec02a.ino: In function 'void loop()':
sketch_dec02a:127: error: expected initializer before 'lightLevel'
An25
Offline
Зарегистрирован: 19.09.2014

126 строку перенеси в 119

( код не проверял)

An25
Offline
Зарегистрирован: 19.09.2014

мельком глянул код -

110delay(10800000);

это что? проц будет тупо в простое 10800 секунд ...

atlet
Offline
Зарегистрирован: 08.12.2014

спасибо An25 ,

все скомпелировалось , завтра буду тестить :)

atlet
Offline
Зарегистрирован: 08.12.2014

немного подправил скеч в итоге

кнопки стоп сигнала и фары работают

индикауия алярма мигает (081) при buttonState != HIGH( swPin8=8; // вкл controler infineon  , magnit sw )

 но два сенсора (092) почемуто включают алярм в противоположном  режиме  отключеного алярма( при buttonState == HIGH т.е. при включенном контролере infineon)

этот  вариант для (092) не проходит

if ( ( buttonState != HIGH) && (VibrationStatus == HIGH && InfraredStatus == HIGH ))

{
digitalWrite(AlarmPin6,HIGH);// вкл.алярм 
delay(5000);// 5 sek
    }
else  
{
digitalWrite(AlarmPin6, LOW);

      }

подскажите ,что я делаю не так...

001const int sensAlarmPin10=10; // sensor capasitive ,infrared , alarm - OK
002const int sensAlarmPin11=11; // alarm sensor vibratie ,alarm  A2 -OK
003const int sgnalPin4=4; // реле на динамик и фара max - OK
004const int buttonSignalPin5=5; // button звуковой сигнал, фара 100% - OK
005const int AlarmPin6=6;  // вкл режим  alarm -
006const int ledAlarmPin7=7; // индикация  режима Alarm (мигание 1 сек)-OK
007const int swPin8=8; // вкл controler infineon  , magnit sw MK)- OK
008const int swRemPin9=9; // sw rem ,stop signal - OK
009const int ledPin14=14; // фара podsvetka  -
010const int ledStopPin15=15; // STOP фара -OK
011const int sensFPin16=16; // fotoelement -
012 
013int lightLevel, high = 0, low = 1023;// fotoelement
014int value=0;
015int buttonState;// вкл controler infineon  , magnit sw MK)
016int InfraredStatus;// alarm sensor capasitive ,infrared
017int VibrationStatus; // alarm sensor vibratie ,alarm  A2
018int StopStatus; //STOP фара
019int SignalStatus;// button звуковой сигнал, фара 100%
020int AlarmStatus;
021 
022void setup()
023{
024   
025 /* initialize ( команда pinMode служит для настройки цифровых портов/контактов платы. в переменная ledPin, ...
026   конфигурируется как вход/выход OUTPUT/INPUT ) pin  as an output:
027    pinMode(Pin , OUTPUT); //Вывод устанавливается как ВХОД
028    digitalWrite(Pin, HIGH ); // устанавливает HIGH (1)+5v/LOW(0), подкл подтягиваю-й резистор (как камутатор) нагрузка через 470 Ом\1кОм
029    digitalRead(Pin, HIGH); считывает значение с цифрового Вывода с результатом HIGH (1)/LOW(0),
030    analogRead (контакты 0-5) value=analogRead(pin);//переменная value=значению напряжения на INPUT/ U=5v шаг 0,0048v(0-1023)
031    аналоговые Выводы ненужно обьявлять как INPUT\OUTPUT */
032   
033pinMode(sgnalPin4, OUTPUT);  // реле на динамик и фара max
034pinMode(buttonSignalPin5, INPUT); // button звуковой сигнал, фара 100%
035 pinMode(AlarmPin6, OUTPUT);// вкл алярм
036pinMode(ledAlarmPin7, OUTPUT); // индикация  режима Alarm (мигание 1 сек)
037 pinMode(swPin8, INPUT); // вкл controler infineon  , magnit sw MK)
038 pinMode(swRemPin9, INPUT);
039 pinMode(sensAlarmPin10, INPUT);
040 pinMode(sensAlarmPin11, INPUT);
041 
042pinMode(ledPin14, OUTPUT); // фара ????
043 pinMode(ledStopPin15, OUTPUT); // STOP фара
044 pinMode(sensFPin16, INPUT);// fotoelement
045     }
046void loop()
047 /* бесконечный цикл  здесь присваиваются команды Цифровой ввод/вывод ,digitalRead/digitalWrite */
048{
049 buttonState = digitalRead(swPin8);  //  magnit  sw MK
050 
051 InfraredStatus=digitalRead(sensAlarmPin10);//infrared 10pin
052 
053VibrationStatus=digitalRead(sensAlarmPin11);//vibrate 11pin
054 
055StopStatus=digitalRead(swRemPin9);//STOP фар
056SignalStatus=digitalRead(buttonSignalPin5);
057AlarmStatus=digitalRead(AlarmPin6);//вкл режим  alarm
058lightLevel = analogRead(sensFPin16);//фоторезистор управление авто подсветкой габаритов
059analogWrite(ledPin14, lightLevel);// подсветка габариты
060 
061if ( StopStatus !=LOW) // кнопка тормоза вкл,загорается задний STOP
062{
063analogWrite(ledStopPin15, value=255);// STOP фара max
064delay(200);//небольшая защита от "дребезга" контактов кнопки
065      }
066else
067{
068analogWrite(ledStopPin15, value=0);// STOP фара max
069      }
070 if (SignalStatus != HIGH )
071{
072digitalWrite (sgnalPin4,LOW);
073analogWrite(ledPin14, value=0);
074}
075else
076{
077digitalWrite (sgnalPin4,HIGH);
078analogWrite(ledPin14, value=255);
079//небольшая защита от "дребезга" контактов кнопки
080     }     
081if ( buttonState != HIGH) // magnit sw MK
082 {
083digitalWrite(ledAlarmPin7,HIGH);
084delay(1000); 
085digitalWrite(ledAlarmPin7,LOW); // индикация режима Alarm (мигание 1 сек) Pin=7
086delay(1000);
087     }
088else 
089{
090digitalWrite(ledAlarmPin7, LOW);
091      }
092if (VibrationStatus == HIGH && InfraredStatus == HIGH )
093{
094digitalWrite(AlarmPin6,HIGH);// вкл.алярм
095delay(5000);// 5 sek
096    }
097else 
098{
099digitalWrite(AlarmPin6, LOW);
100      }
101}
102   void manualTune()
103{
104  lightLevel = map(lightLevel, 300, 800, 0, 255);/*настраивать в ручную Просто меняем 0, 1023 в страке ниже на что-то типа 300-800*/
105lightLevel = constrain(lightLevel, 0, 255);
106      }
107    
108