Показать сообщение отдельно
Старый 26.05.2016, 16:55   #416
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от T_r_D Посмотреть сообщение
Итак- вот скетч.
Делеи менять на задержку реального временни желания нет, так как эта ардуина рулит только питанием и ни чем более. Чтоб вы себе долго не ломали голову почему мерию на двух пинах напругу- я контролирую сон и пробуждение планшета по напряжению подсветки экрана.

А на вопрос про засыпание и пробуждение планшета ответит сам скетч, но оно ни как не зависит от замера напряжения.
Так что вставил ключь или включил магнитолу- всё запустилось, вытащил, кондёр разрядился- всё потухло.
На зажигании 220,0 стоит, на магнитоле 22,0. 220 это примерно 4 секунды задержки.

PHP код:
unsigned long time0 0;
boolean OnceLoPow false;
unsigned int accpower 0;
int accpowercount 0;
int accpoweravg 1023;

void setup() {
  
//Arduino Pro-Micro
  //21 = A3
  //20 = A2
  //19 = A1
  //18 = A0
pinMode(18OUTPUT); //Tablet button
pinMode(19OUTPUT); //HUB power
pinMode(20INPUT);  //Tablet Screen action. Analog! If input >232 then screen on 
pinMode(21OUTPUT); //Tablet power
pinMode(10OUTPUT); //Tablet power supply low if car bat level low

pinMode(A7INPUT);   //Car bat level (In bord PIN 6!!!) 541=11,91 **analogRead(A7) * (1.1 / 1023.0*20.50);
pinMode(8INPUT);   //Radio input
pinMode(9INPUT);   //ACC input

digitalWrite(21LOW);
digitalWrite(19LOW);
digitalWrite(18LOW);
digitalWrite(10LOW);
}

void loop() {
WorkLoop();
  if ((
millis() - time0) > 100){
      if (
accpowercount == 60){
      
accpoweravg accpower 60;
      
accpowercount 0;
      
accpower 0;
      }
      else  
ACCLevel();
    
time0 millis();
  }
}

void WorkLoop(){
//_____________________________ON_______________________________
  
if (digitalRead(8) == HIGH || digitalRead(9) == HIGH){
    
OnceLoPow false;
    
digitalWrite(19LOW);
    
digitalWrite(21LOW);
    if(
analogRead(20) < 400) {
     
BtnClick(300);
      if (
analogRead(20) < 400BtnClick(3000);
    }
  }
//____________________STAND-BY or LO POWER_______________________  
   
else{
    if (
accpoweravg 541){
      
OnceLoPow false;
      if(
analogRead(20) > 400) {
        
BtnClick(300);
        
delay(4000);
      }
     
digitalWrite(19HIGH);
    }
    else{
      if (!
OnceLoPow){
       
digitalWrite(10HIGH);
       
delay(10000);
       
digitalWrite(10LOW);
       
OnceLoPow true;
      }
    
digitalWrite(19HIGH);
    
digitalWrite(21HIGH);  
    }
   }
}

void BtnClick(int Interval) {
    
digitalWrite(18HIGH);
    
delay(Interval);
    
digitalWrite(18LOW);
    
delay(1000);
  }

void ACCLevel() {
  
accpower accpower analogRead(A7);
  
accpowercount accpowercount 1;

а зачем void ACCLevel() {
accpower = accpower + analogRead(A7);
accpowercount = accpowercount + 1;
вынесен в отдельную функцию?

PHP код:
WorkLoop(); 
  if ((
millis() - time0) > 100){ 
      if (
accpowercount == 60){ 
      
accpoweravg accpower 60
      
accpowercount 0
      
accpower 0
      } 
      else  { (
accpower accpower analogRead(A7));   (accpowercount accpowercount 1); }; 
    
time0 millis(); 
  } 

А так можно?
oleg707 вне форума   Ответить с цитированием