funzione if () non distingue caratteri che arrivano al modulo 433mhz

Una scheda Arduino sul balcone trasmette data, ora, temperatura,umidità, temperatura e umidità massima e minima del giorno in corso in 3 array char diversi che ricevo in casa con un altro Arduino, il modulo 433mhz e un lcd_i2c 20x4.
I 3 array char iniziano, rispettivamente con "a", "b", e "c" per distinguerli e posizionarli sempre sulla stessa riga del lcd.
Visto che arriva un array char alla volta mi aspetterei la risposta da uno solo degli ultimi tre salti condizionati del codice, mentre ottengo:
aaaaa
bbbbbb
cccccc

come se fossero vere tutte e tre le condizioni contemporaneamente.
E' evidente che c'è qualcosa che non ho capito.
Voi avete una spiegazione?
Grazie sin da ora.

Ecco il codice del ricevente:

#include <VirtualWire.h>
const int receive_pin = 7;
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int riga=0;
float tempint=99.9; // in seguito aggiungerò un sensore della temperatura dentro casa

void setup() {
  vw_set_rx_pin(receive_pin);
  Serial.begin(9600);  
  vw_setup(2000); // Bits per sec
  vw_rx_start();  // Start the receiver PLL running
 lcd.begin(20,4);
  lcd.backlight(); 
  lcd.setCursor(0,0);//lcd.print("Versione 1.0");
                  }  //fine setup                  
void loop() { 
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;

   if (vw_get_message(buf, &buflen))  { // Non-blocking
     int i; // Message with a good checksum received, dump HEX
     for (i = 1; i < buflen; i++)  {   // inizia da 1 per saltare il primo carattere 
         lcd.setCursor(i,riga);lcd.write(buf[i]);                 
                                          } //fine for i                        
     riga=riga+1;
     if (riga>2) {riga=0;}    
     if (buf[0]='a') { Serial.println("aaaaa    ");} 
     if (buf[0]='b') {Serial.println("bbbbbb    ");}
     if (buf[0]='c') {Serial.println("cccccc    ");} ///tuttie tre sono veri: perchè
     lcd.setCursor(0,3);lcd.print(tempint);   // temperatura di casa alla 4° riga del lcd    
                                                       }                                    

                     }  // fine void loop

Ripassa la "sottile" (mica tanto) differenza che c'è in C tra = e == :wink:

Grazie!

mi ero incantato su questo errore