duinozone.cz - Arduino a Raspberry fórum

Autor Téma: poradí někdo jak spojit dva kódy???  (Přečteno 32 krát)

Offline geshc

  • Bastlíř začátečník
  • *
  • Příspěvků: 12
poradí někdo jak spojit dva kódy???
« kdy: Únor 14, 2018, 17:56:39 odpoledne »
ahoj poradil by někdo jak spojit dva programy viz. níže tak aby program na kontrolu akumulátoru fungoval jen jednou na začátku po zmáčknutí tlačítka na zapnutí první úrovně topení a pak usnul ??? a zase pokračoval až když se zase jednou zmáčkne tlačítko na první úroven topení ??? aby se ukázal stav cca na 5sec...

první program:

int LED=5;              //ledka na pinu 5 kontrola stavu akumulátoru
int VoltageIni=A0;  // měření napětí na pinu A0
int tlacitko = 8;      //tlačítko na pinu 3
int topeni = 10;        //topení na pinu 1
int vibro = 11;        //vibrace na pinu 0
int poc;              //počitadlo

boolean lastButton = LOW;
boolean currentButton = LOW;


int uroven = 1;
int PocetZmacknuti = 0; //nastavuju promenou

void setup() {               
 
pinMode(LED, OUTPUT);
pinMode(tlacitko, INPUT);  //tlačítko nastaveno jako vstup
pinMode(topeni, OUTPUT);   //topení nastaveno jako výstup
pinMode(vibro,OUTPUT);     // vibrace nastavena jako výstup
pinMode(LED,OUTPUT);       //led nastaven jako výstup 
}
 boolean debounce(boolean last)
{
boolean current = digitalRead(tlacitko);
if (last = current)
if (poc = tlacitko);
{
delay(100);
current = digitalRead(tlacitko);
}
return current;
}
void loop()
  {
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
 
{
 

PocetZmacknuti = PocetZmacknuti + 1;

poc=0; // pocitadlo nastav na nulu
  do{  //cyklus pro vibrování
    digitalWrite(vibro, HIGH);
    delay(300);
    digitalWrite(vibro, LOW);
    delay(200);
    poc++; //navyseni pocitadla o 1
  }while (poc<PocetZmacknuti); //podminka pro ukonceni nakonci
 
uroven = uroven + 81;

}
lastButton = currentButton;


if (uroven > 255)
{
uroven = 0;
PocetZmacknuti = 0; // nuluju promenou
}
analogWrite(topeni, uroven);
     
                   
  }

druhý program na kontrolu stavu akumulátoru :

double Voltage=analogRead(VoltageIn);
 
  Voltage = (4.99/1023.0) * Voltage; 
 
  if(Voltage < 4.12)   //0-30%
  {
    digitalWrite(LED,LOW); 
  }
  if(Voltage > 4.12 && Voltage < 4.55)   //30-60%
  {
    digitalWrite(LED,HIGH);   
    delay(500);               
    digitalWrite(LED,LOW);     
    delay(500);               
  }
 
  if(Voltage > 4.55 && Voltage < 4.99)   //60-100%
  {
    digitalWrite(LED,HIGH);
« Poslední změna: Únor 14, 2018, 17:58:29 odpoledne od geshc »