Cadenas de caracteres y arrays...me estoy liando!!

Buenas gente.

A ver quiero hacer algo en principio parecía sencillo pero llevo todo el día y no he dado con ello.

Tengo conectados 2 arduinos por I2C.
El maestro le envía en un momento dado:Wire.send(“Ledon”);
Y quiero que reciba estos caracteres uno a uno y luego unirlos en una variable , para luego poder utilizarla en un, if (palabra=“Ledon”)…

El código que me falla es el del esclavo , tengo un problema en el IF (palabra=“ledon”)
ME dice error: incompatible types in assignment of ‘const char [6]’ to 'char [10]

He tratad de convertirlo de varias maneras, he probado con la biblioteca Wstring, pero no soy capaz!! :-/

Echarme una mano!!!
Este es el codigo del esclavo:

// Wire Slave Receiver
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Receives data as an I2C/TWI slave device
// Refer to the "Wire Master Writer" example for use with this

// Created 29 March 2006

#include <Wire.h>
char palabra[10];
void setup()
{
  Wire.begin(4);                // join i2c bus with address #4
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);           // start serial for output
}

void loop()
{
  delay(100);
  led();
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
  byte buf_pos=0;
   
  while(1 < Wire.available()) // loop through all but the last
  {
    char c = Wire.receive(); // receive byte as a character
    Serial.println(c);         // print the character
    palabra[buf_pos]= c;
    buf_pos++;
  }
        // print the integer
}

void led()
{
if (palabra="Ledon")
 {
 digitalWrite(13, HIGH);
 }
}

Gracias!!! :wink:

Hola

En C un string es un array de char que termina con un delimitador (0) y que no hay que olvidarse poner. Esto es, para guardar un string de 4 caracteres necesito un array de 5 elementos.

Para comparar dos strings puedes hacer un bucle y comparar uno a uno los elementos (caracteres) del array o usar la funcion strcmp().

Hola, a parte de lo anterior expuesto por complubot, recuerda que debes poner if (palabra == ....) con 2 == ya que de lo contrario siempre se cumplira la condición.

Saludos

Creo que el condicional exacto qe debes poner es:

if (!strcmp(palabra,"ledon"))