включение пина

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

доброго времени помогите плиз запутался 

  int regim=1;
int flag=0;
const int PWM_PIN = 10;  // выход расходомер 
const int AIN_PIN = A0; // вход расходомер  
const int MK2_PIN = 5;  // вход со 2 мк <pin6
const int PUMP_PIN = 3; // пин включения насоса

 byte VAF[256]= //таблица выход
{
205,202,198,195,192,189,185,182,179,176,
172,169,167,165,164,162,160,158,157,155,
153,151,150,148,146,145,144,142,141,140,
138,136,134,133,132,130,129,128,126,125,
123,122,121,120,119,118,117,116,115,114,
113,112,111,110,109,108,107,106,105,104,
103,102,101,100,99,98,96,95,94,93,
92,91,90,89,88,87,86,85,84,83,
82,81,80,79,78,77,76,75,74,73,
72,71,70,70,69,69,68,67,67,66,
66,65,65,64,63,63,62,62,61,60,
60,59,58,58,57,57,56,56,55,54,
54,53,52,52,51,51,50,49,49,48,
48,47,46,46,45,44,44,43,43,42,
41,41,40,40,40,39,39,39,38,38,
38,37,37,37,36,36,36,35,35,34,
34,34,33,33,33,32,32,32,31,31,
30,30,30,30,30,30,29,29,29,28,
28,28,27,27,26,26,26,25,25,25,      
24,24,24,23,23,23,22,22,21,21,
21,20,20,20,19,19,19,18,18,18,
17,17,16,16,16,15,15,15,14,14,
14,14,14,14,13,13,13,12,12,12,
11,11,11,10,10,9,9,8,8,7,
7,6,6,5,5,4,4,3,3,2,
2,1,1,1,0,0
};

byte VAF1[256] = // вторая таблица выход 
{
205,202,198,195,192,189,185,182,179,176,
172,169,167,165,164,162,160,158,148,146,
145,144,143,142,140,138,137,136,134,133,
132,130,129,128,126,125,123,122,121,120,
119,118,117,116,115,114,113,112,111,110,
109,108,107,106,105,104,103,102,101,100,
99,98,97,96,95,94,93,92,91,91,
90,89,88,87,86,85,84,83,82,82,
81,80,79,78,77,76,75,74,73,72,
72,71,70,70,69,69,68,67,67,66,
66,65,65,64,63,63,62,62,61,60,
60,59,58,58,57,57,56,56,55,54,
54,53,52,52,51,51,50,49,49,48,
48,47,46,46,45,44,44,43,43,42,
41,41,40,40,40,39,39,39,38,38,
38,37,37,37,36,36,36,35,35,34,
34,34,33,33,33,32,32,32,31,31,
30,30,30,30,30,30,29,29,29,28,
28,28,27,27,26,26,26,25,25,25,      
24,24,24,23,23,23,22,22,21,21,
21,20,20,20,19,19,19,18,18,18,
17,17,16,16,16,15,15,15,14,14,
14,14,14,14,13,13,13,12,12,12,
11,11,11,10,10,9,9,8,8,7,
7,6,6,5,5,4,4,3,3,2,
2,1,1,1,0,0
};
int val = 0;// переменная для хранения сигнала входящего расходомера
void setup()
{
 pinMode(PWM_PIN,OUTPUT);
 pinMode(AIN_PIN,INPUT);
 pinMode(MK2_PIN,INPUT);
 pinMode(PUMP_PIN,OUTPUT);
 TCCR1B = TCCR1B & 0b11111000 | 0x02;

}
void loop()
{

{
 if(digitalRead(MK2_PIN)==HIGH&&flag==0)//если кнопка нажата   
     // и перемення flag равна 0 , то ... 
     { 
       regim++;   
       flag=1; 
         
        //это нужно для того что бы с каждым нажатием кнопки 
        //происходило только одно действие 
        // плюс защита от "дребезга"  100% 
          
        if(regim>2)//ограничим количество режимов 
        { 
          regim=1;//так как мы используем только одну кнопку, 
                    // то переключать режимы будем циклично 
        } 
       
     } 
       
      if(digitalRead(MK2_PIN)==LOW&&flag==1)//если кнопка НЕ нажата 
     //и переменная flag равна - 1 ,то ... 
     { 
          
        flag=0;//обнуляем переменную "knopka" 
     } 
      
if(regim==1)//первый режим 
    { 
     
 int val = analogRead ( AIN_PIN );
 int inSignal = map (val,0,1023,0,255);
 analogWrite (PWM_PIN,VAF[inSignal]); 
    } 
    if(regim==2)//второй режим 
    { 
     
 int val = analogRead ( AIN_PIN );
 int inSignal = map (val,0,1023,0,255);
 analogWrite (PWM_PIN,VAF1[inSignal]); 
    } 
  }
  if(AIN_PIN > 100)
 {
 digitalWrite(PUMP_PIN, HIGH);
 }
 else
 {
 digitalWrite(PUMP_PIN, LOW);
 }
}

 

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

как включить PUMP_PIN по условию ?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Строки 80, 120  -  убрать лишние фигурные скобки

Строки 109, 116  -  убрать int, т.к. переменная val уже объявлена в строке 67.
UPD: Хотя нет,  строки 109 и 116 лучше оставить как есть, а строку 67 убрать. Т.к. нет нужды в глобальной переменной val.

Строки 110, 117  -  int можно заменить на byte или uint8_t, т.к. максимальное значение 255, достаточно одного байта. Аналогично для переменных regim и flag (строки 1 и 2).

Строка 121  -  должно быть  if (analogRead(AIN_PIN) > 100)

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Огромное спасибо , вечером дома буду дальше  мучить ардуинку ))))

А почемуто думал что достаточно записи if (AIN_PIN> 100) 

тут и ошибся 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

yrik8407 пишет:

А почемуто думал что достаточно записи if (AIN_PIN> 100) 

Обратите внимание на строку 4 (AIN_PIN = A0). В связи с этим запись if (AIN_PIN > 100)  будет равносильна записи  if (A0 > 100). Это неправильно, т.к. нам надо сравнивать не номер пина (А0), а значение с пина (0 - 1023). Условный оператор if не занимается считыванием значений. Значение нужно предварительно получить с помощью предусмотренной для этого функции analogRead. 

Вот например в строках 81, 99 сделано правильно. Из чего можно сделать вывод, что это не Вы писали. Где-то взяли готовые куски кода и не разобрались как это работает.

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Именно этот кусок я повторил из http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku

А все остальное я разбирался сам и с людьми  с этого сайта 

А начинал с этого http://arduino.ru/forum/obshchii/upravlenie-shim-po-tablitse#comment-241212и с книги

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

А за разъяснения спасибо