Ardunio 2 giriş analog kontrol

PROJJE

Üye
Katılım
8 Tem 2020
Mesajlar
26
Puanları
1
merhaba ardunio ile iki anolog girişi okuyan ve bu girişleri şartlı calıştırabilecegım bir kod yazmayı tasarlıyorum şöyle calısır

önce A6 VE A7 girişleri tanımlayalım 0-5v = 1023 deger okuyacak
A7 önce okumayacak A6 şartı gercekleştinde A7 okumaya baslıcak mesela A6 0-200mv =45 degerini
aştında A7 ye yönlendirip A7 okumaya devatetmesını ıstıyorum ve tekrar geri 45 degerin altına okuma geldınde okumayacak yani A6 kalıbrasyon yapacak kalıbrasyon gerceklesınce A7 calıstırıp okutmaya devam edecek

bunun do whıle ile denedim fakat sonsuz dongu yaptı geri geldımde okumadı yaptım kodlar asada


unsigned long oldTime = 0; const long interval = 100; unsigned long sensorPin = A7 ; unsigned long sensor = A6 ; unsigned long sensorC =20; int sensorMin = 1023; int sensorMax = 0; int sensorValue = 0; unsigned int MinCAL = 10; unsigned int MaxCAL = 1022; byte calb=4; byte out=5; void setup() { pinMode( sensor , INPUT); // modlar : pinMode(sensorPin, INPUT); pinMode (out,OUTPUT); pinMode (calb,OUTPUT); reads (); } void loop() { unsigned long currentMillis = millis(); if((currentMillis - oldTime) > interval) { oldTime = currentMillis; } sensorC = analogRead(sensor); while (MinCAL>=MaxCAL) { reads(); } digitalWrite (out,1); sensorValue = analogRead(sensorPin); sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); sensorValue = constrain(sensorValue, 0, 255); { if ( sensorValue>=250 ) {digitalWrite(calb, 1);} else {digitalWrite(calb, 0); delay (10);} } } void reads() { digitalWrite( out, 0); sensorValue = analogRead(sensorPin); if (sensorValue > sensorMax) { sensorMax = sensorValue; } if (sensorValue < sensorMin) { sensorMin = sensorValue; } }
Kod:
unsigned long oldTime = 0;
const long interval = 1000;

unsigned long  sensorPin = A7 ;
unsigned long  sensor = A6 ;
unsigned long  sensorC =20;

int sensorMin = 1023; 
int sensorMax = 0;     
int sensorValue = 0;
unsigned int MinCAL = 10;
unsigned int MaxCAL = 1022;

byte calb=4;
byte out=5;


void setup()
{

pinMode( sensor , INPUT);   //  modlar :
pinMode(sensorPin, INPUT); 
pinMode  (out,OUTPUT);   
pinMode  (calb,OUTPUT);

reads ();

}

 
   void loop()
{
  unsigned long currentMillis = millis();     
  if((currentMillis - oldTime) > interval)     
  {
    oldTime = currentMillis;  }                 
    
       sensorC = analogRead(sensor);
     while (MinCAL>=MaxCAL)  { reads(); }
       digitalWrite  (out,1); 

      sensorValue = analogRead(sensorPin);

  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  sensorValue = constrain(sensorValue, 0, 255);
    
 { if ( sensorValue>=250 )
  {digitalWrite(calb, 1);}
  else
  {digitalWrite(calb, 0);
 delay (10);}   
 



}    }


void reads() {

  digitalWrite(  out, 0);
  sensorValue = analogRead(sensorPin);
   if (sensorValue > sensorMax) {
   sensorMax = sensorValue;  }
  if (sensorValue < sensorMin) {
    sensorMin = sensorValue;

  }
}
kodlardan iyi anlayan arkadaslardan yardım istıyorum
 
Son düzenleme:
ffgg.png
 
Tek analog girişle olmaz mı?
olur onada razıyım iki girişle olma ihtımali sorunlumu tartısabılırız

İF
do while
break
swic case
gibi komutlarda var kararlı calısmasını saglıcak kodlar olsun
bu tür kodlarda denedim geri 0-200mv düstünde sorunlar oluyor okumuyor yada atlıyor

mesela
sensor= analogRead(A6);
{ if (0>=40) ( goto calıbre et)
}
{ calibre et ;


kodlar gıbı
devam et
sensorValue = analogRead(A7);

sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);



örnek iki

mesela
sensor = analogRead(A6);
{ if (0>=40) { ( calıbre)
}
{


devamet

void calibre {
sensorValue = analogRead(A7);

sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); }
 

Forum istatistikleri

Konular
128,123
Mesajlar
915,190
Kullanıcılar
449,830
Son üye
xkullanıcı45

Yeni konular

Geri
Üst