5 ayrı arduinodan sıcaklık verisini okuma

Erraynn

Üye
Katılım
5 Şub 2021
Mesajlar
19
Puanları
1
Yaş
34
Merhaba arkadaşlar 6 adet arduinoyu rs485 le haberlestirip arduinolara bağlı lm35 sıcaklık sensörü ile algılayıp master olarak belirleyecegim arduinoda toplayabilirmiyim.lutfen acil yardıma ihtiyacım var
 
İnanın bir haftadır araştırıyorum. 2 arduinoyu haberlestirmede sıkıntı yok. Benim yapmak istedigim 5 tane slave durumundaki arduinodaki sıcaklık bilgisini 5 dk de bir master olarak belirleyecegim 6. Bir arduinoda toplamak istiyorum
 
Ha 2 tane ha 20 tane. Kabloyu devam ettir tümüne bağla.
 
Masterdan sorgu göndermelisin tabi slave olanların id sini ekleyerek. Kodunu paylaşırsan yardımcı olurum
 
Master çağrı sinyalini hatta yollayacak.
"Slave 1 sıcaklık yolla" diyecek. Sırayla
sorgulama yapacak.
Önce tek cihaz ile deneyin. Slave cihaz
dakikada bir okusun gerekirse alçak
geçiren filtre ile sıcaklığı aklında tutsun.
Veri yollarken,
başlık + veri + crc
olarak paketlensin. Aynı şekilde master
bu şekilde başlığı yakalayıp veriyi çözecek.
Başlangıçta 9600baud yeterli.
 
Arkadaşlar bugün arduinolar nihayet elime ulaştı ancak bu haberleşmeyi bir türlü çözemedim lütfen yardım edin.



Böyle bir yapı düşündüm ama 2 arduinoyu bile haberlestiremedim.
İf(Serial.read()==1)
{
Serial.vrite(sensör);
}
 
Atmega328'in uart kesmesi vardır yeni veri geldiği zaman doğrudan işlem yapar hariçten uart paketlerini dinlemeye gerek yoktur. Örneklerin içinde SerialEvent var aşağıdaki kodu ordan aldım.

Kod:
/*
  Serial Event example

  When new serial data arrives, this sketch adds it to a String.
  When a newline is received, the loop prints the string and clears it.

  A good test for this is to try it with a GPS receiver that sends out
  NMEA 0183 sentences.

  NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or
  other ATmega32U4 based boards.

  created 9 May 2011
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/SerialEvent
*/

String inputString = "";         // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete

void setup() {
  // initialize serial:
  Serial.begin(9600);
  // reserve 200 bytes for the inputString:
  inputString.reserve(200);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {
    Serial.println(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
}

/*
  SerialEvent occurs whenever a new data comes in the hardware serial RX. This
  routine is run between each time loop() runs, so using delay inside loop can
  delay response. Multiple bytes of data may be available.
*/
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}
 
Fakir maker ustam gösterdiğiniz yol için teşekkür ederim. Ancak şimdide şoyle bir sorunum var 2 arduinoyu seri olarak haberlestirebiliyorum ancak araya Max 485 i bağlandığında iletişim sağlayamıyorum. Max 485 in re-de ucu birleşik. Arduinodan lojik 1 - 0 yaptığımda veriyi iletemiyor. Verici arduinonun tx ledi parlak yanıp sönüyor ama alıcı arduinonun tx ledi çok sönük yanıp sönüyor veriyi alamıyorum. Fakat verici arduinonun re-de ucunu +5 v bagladigimda sorunsuz veriyi aktarıyor tek yönlü bunun sebebi ne olabilir
 

Forum istatistikleri

Konular
129,833
Mesajlar
930,588
Kullanıcılar
452,659
Son üye
ertkn

Yeni konular

Geri
Üst