Ajuda para criar o código

Boa tarde Galera
Estou montando um projeto de estacionamento inteligente via radio frequência e estou com uma dificuldade na hora de criar o código.
estou utilizando dois Arduino UNO pra comunicar entre si utilizando o RF TX/RX 433MHz.

componentes para o projeto:

2x Arduino UNO
2x Sensores ultra sônico HC-RS04
par de RF 433MHz
Display 16x2
2 leds verdes
2 leds vermelhos

O Arduino que será o transmissor coleta as informações dos dois sensor ultrassônicos HC-RS04 e envia pelo RF Transmissor para o outro Arduino que será o receptor e mostra a informação no display 16x2 as informações das vagas.
exemplo:
Vaga A livre ou ocupada
Vaga B livre ou ocupada

e mantem o led verde ou vermelho acesso dependendo se a vaga estará livre ou ocupada.

na internet procurei, mas só tem feito com um arduino mega sem o RF433MHz

okay, mas qual e sua pergunta?

Criar o código para um estacionamento com duas vagas e mostrar no display.
Tentei fazer, mas estava dando erro.

sim mas, nao sei exatamente o que voce quer que a gente faça?
Ninguém ira escrever pra você e entregar pronto, isso seria um serviço de 1000 reais.
Agora se voce precisa de um link para um codigo que faca isso, como e algo bem specifico , voce tera que entender suficiente sobre programação para modificar um exemplo.

Fiz algumas adaptações no meu código que será o transmissor e está dando erro.

#include <NewPing.h>

#include <VirtualWire.h>

#define SONAR_NUM 2 // Define o numero de sensores
#define MAX_DISTANCE 10 // Distancia maxima

// Milisegundos de intervalo entre medicoes (29ms e o tempo mínimo para
// evitar conflito entre os sensores)
#define PING_INTERVAL 33

// Armazena a quantidade de vezes que a medicao deve ocorrer,para cada sensor
unsigned long pingTimer[SONAR_NUM];

unsigned int cm[SONAR_NUM]; // Armazena o numero de medicoes
uint8_t currentSensor = 0; // Armazena o sensor que esta ativo

int Pinoled1Verm = 8; //Pino led1 - Vermelho
int Pinoled1Verde = 7; //Pino led1 - Verde
int Pinoled2Verm = 6; //Pino led2 - Vermelho
int Pinoled2Verde = 5; //Pino led2 - Verde
int vagaslivres = 2; //Contador de vagas livres
int vagasocupadas = 0; //Contador de vagas ocupadas
int sensor1 = 0; //Contador de vagas no sensor1
int sensor2 = 0; //Contador de vagas no sensor2

NewPing sonar[SONAR_NUM] =
{
// Armazena informacoes sobre a pinagem dos sensores
// Pino trigger, echo e distancia máxima, para cada sensor
NewPing(13, 12, MAX_DISTANCE),
NewPing(11, 10, MAX_DISTANCE),
};

void setup()
{
pingTimer[0] = millis() + 75; //Primeira medicao começa com 75ms
//Define o tempo de inicializacao de cada sensor
for (uint8_t i = 1; i < SONAR_NUM; i++)
pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
pinMode(Pinoled1Verm, OUTPUT); //Define o Pino vermelho do led1 como saida
pinMode(Pinoled1Verde, OUTPUT); //Define o Pino verde do led1 como saida
pinMode(Pinoled2Verm, OUTPUT); //Define o Pino vermelho do led2 como saida
pinMode(Pinoled2Verde, OUTPUT); //Define o Pino verde do led2 como saida
vw_set_tx_pin(8);
vw_setup(2000); // Bits per sec
Serial.println(“Digite o texto e clique em ENVIAR…”);
}

void loop()
{
// Loop entre todos os sensores
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if (millis() >= pingTimer[i]) {
//Define o tempo que o proximo sensor sera acionado
pingTimer[i] += PING_INTERVAL * SONAR_NUM;
// Ciclo do sensor completo
if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle();
// Reseta o timer antes de ler o proximo sensor
sonar[currentSensor].timer_stop();
// Número do sensor sendo acionado
currentSensor = i;
// Se nao houver eco do sensor, seta a distância como zero
cm[currentSensor] = 0;
sonar[currentSensor].ping_timer(echoCheck);
}
}

//Calcula a quantidade de vagas disponiveis e ocupadas, e imprime no display
vagasocupadas = sensor1 + sensor2;
vagaslivres = 2 - vagasocupadas;
lcd.setCursor(0,0);
lcd.print("Vagas livres = ");
lcd.print(vagaslivres);
lcd.setCursor(0,1);
lcd.print("Vagas ocup. = ");
lcd.print(vagasocupadas);
}
char data[40];
int numero;
if (Serial.available() > 0)
{
numero = Serial.readBytesUntil (13,data,40);
data[numero] = 0;
Serial.print("Enviado : “);
Serial.print(data);
Serial.print(” - Caracteres : ");
Serial.println(strlen(data));
//Envia a mensagem para a rotina que
//transmite os dados via RF
}
}

void echoCheck()

void oneSensorCycle()

for (uint8_t i = 0; i < SONAR_NUM; i++) {
//Se for detectado objeto entre 0 e 50 cm do sensor1, acende o led1 vermelho
if (cm[0] > 1 && cm[0] < 50)
{
digitalWrite(Pinoled1Verm, 1);
digitalWrite(Pinoled1Verde, 0);
sensor1 = 1; //Incrementa o número de vagas ocupadas na vaga1
}
else //Se não for detectado objeto no sensor 1, mantém o led1 verde aceso
{
digitalWrite(Pinoled1Verm, 0);
digitalWrite(Pinoled1Verde, 1);
sensor1 = 0; //Marca a vaga 1 como livre
}

//Se for detectado objeto entre 0 e 50 cm do sensor2, acende o led2 vermelho
if (cm[1] > 1 && cm[1] < 50)
{
digitalWrite(Pinoled2Verm, 1);
digitalWrite(Pinoled2Verde, 0);
sensor2 = 1; //Incrementa o número de vagas ocupadas na vaga2
}
else //Se não for detectado objeto no sensor 2, mantém o led2 verde aceso
{
digitalWrite(Pinoled2Verm, 0);
digitalWrite(Pinoled2Verde, 1);
sensor2 = 0; //Marca a vaga 2 como livre
}

void send (char *message)
{
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Aguarda o envio de dados
digitalWrite(led_pin, LOW);
delay(1000);
}

@Paulo_Sergio1 boa noite, e qual é o erro que esta dando?

Att
Max

Boa noite. O erro eu consegui tirar, passou na verificação e copilou. Mas quando passei para os Arduinos e fui testar, não funcionou. Não apareceu nada no display e nem as luzes do led ficaram acessas. Não sei se faltou algum comando…

Falai @Paulo_Sergio1 blz, cara faz o seguinte posta novamente o seu código com as novas alterações que você fez, pois o código antigo estava faltando muitas chaves e o void loop tava fechando bem antes do das linhas de código serem finalizadas. Utilize o ícone </> na barra de ferramentas para poder postar o código.
No aguardo
Att
Max

ESSE É O CODIGO PARA O TRANSMISSOR .

#include <NewPing.h>

#include <VirtualWire.h>

#define SONAR_NUM 2 // Define o numero de sensores
#define MAX_DISTANCE 10 // Distancia maxima

// Milisegundos de intervalo entre medicoes (29ms e o tempo mínimo para
// evitar conflito entre os sensores)
#define PING_INTERVAL 33

// Armazena a quantidade de vezes que a medicao deve ocorrer,para cada sensor
unsigned long pingTimer[SONAR_NUM];

unsigned int cm[SONAR_NUM]; // Armazena o numero de medicoes
uint8_t currentSensor = 0; // Armazena o sensor que esta ativo

int Pinoled1Verm = 8; //Pino led1 - Vermelho
int Pinoled1Verde = 7; //Pino led1 - Verde
int Pinoled2Verm = 6; //Pino led2 - Vermelho
int Pinoled2Verde = 5; //Pino led2 - Verde
int vagaslivres = 2; //Contador de vagas livres
int vagasocupadas = 0; //Contador de vagas ocupadas
int sensor1 = 0; //Contador de vagas no sensor1
int sensor2 = 0; //Contador de vagas no sensor2
int trigger1 = 13;
int trigger2 = 11;
int echo1 = 12;
int echo2 = 10;
int message = 0;

NewPing sonar[SONAR_NUM] =
{
// Armazena informacoes sobre a pinagem dos sensores
// Pino trigger, echo e distancia máxima, para cada sensor
NewPing(13, 12, MAX_DISTANCE),
NewPing(11, 10, MAX_DISTANCE),
};

void setup()
{
Serial.begin(9600);
pingTimer[0] = millis() + 75; //Primeira medicao começa com 75ms
//Define o tempo de inicializacao de cada sensor
for (uint8_t i = 1; i < SONAR_NUM; i++)
pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
pinMode(Pinoled1Verm, OUTPUT); //Define o Pino vermelho do led1 como saida
pinMode(Pinoled1Verde, OUTPUT); //Define o Pino verde do led1 como saida
pinMode(Pinoled2Verm, OUTPUT); //Define o Pino vermelho do led2 como saida
pinMode(Pinoled2Verde, OUTPUT); //Define o Pino verde do led2 como saida
vw_set_tx_pin(9);
vw_setup(2000); // Bits per sec
Serial.println(“Digite o texto e clique em ENVIAR…”);
}

void loop()
{
// Loop entre todos os sensores
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if (millis() >= pingTimer[i]) {
//Define o tempo que o proximo sensor sera acionado
pingTimer[i] += PING_INTERVAL * SONAR_NUM;
// Ciclo do sensor completo
if (i == 0 && currentSensor == SONAR_NUM - 1);
// Reseta o timer antes de ler o proximo sensor
sonar[currentSensor].timer_stop();
// Número do sensor sendo acionado
currentSensor = i;
// Se nao houver eco do sensor, seta a distância como zero
cm[currentSensor] = 0;

}
}
}
char data[40];
int numero;

void echoCheck()
{
//Se for detectado objeto entre 0 e 50 cm do sensor1, acende o led1 vermelho
{
if (cm[0] > 1 && cm[0] < 50)
{
digitalWrite(Pinoled1Verm, 1);
digitalWrite(Pinoled1Verde, 0);
sensor1 = 1; //Incrementa o número de vagas ocupadas na vaga1
}
else //Se não for detectado objeto no sensor 1, mantém o led1 verde aceso
{
digitalWrite(Pinoled1Verm, 0);
digitalWrite(Pinoled1Verde, 1);
sensor1 = 0; //Marca a vaga 1 como livre
}
//Se for detectado objeto entre 0 e 50 cm do sensor2, acende o led2 vermelho
if (cm[1] > 1 && cm[1] < 50)
{
digitalWrite(Pinoled2Verm, 1);
digitalWrite(Pinoled2Verde, 0);
sensor2 = 1; //Incrementa o número de vagas ocupadas na vaga2
}
else //Se não for detectado objeto no sensor 2, mantém o led2 verde aceso
{
digitalWrite(Pinoled2Verm, 0);
digitalWrite(Pinoled2Verde, 1);
sensor2 = 0; //Marca a vaga 2 como livre
}
}
void send (char * message);
{

vw_send((uint8_t *)message, strlen(message));
vw_wait_tx(); // Aguarda o envio de dados
}
}

ESSE É O CODIGO PARA O ARDUINO RECEPTOR

#include <VirtualWire.h>

#include <LiquidCrystal.h>

byte message{VW_MAX_MESSAGE_LEN};
byte messageLength = VW_MAX_MESSAGE_LEN;
LiquidCrystal lcd{12, 11, 5, 4, 3, 2};

int vagaslivres = 2; //Contador de vagas livres
int vagasocupadas = 0; //Contador de vagas ocupadas
int sensor1 = 0; //Contador de vagas no sensor1
int sensor2 = 0; //Contador de vagas no sensor2

void setup() {
Serial.begin(9600);
vw_set_rx_pin(10);
lcd.begin(16, 2);
vw_setup(2000);
vw_rx_start();
}

void loop()
{
lcd.setCursor(0, 0);
{
Serial.print("Recebido: ");
lcd.clear(); //Apaga o buffer e o display
{
lcd.display();
lcd.setCursor(0, 0);
lcd.print("Vagas livres = ");
lcd.setCursor(0, 1);
lcd.print("Vagas ocup. = ");
}
}
Serial.println();
//Calcula a quantidade de vagas disponiveis e ocupadas, e imprime no display
vagasocupadas = sensor1 + sensor2;
vagaslivres = 2 - vagasocupadas;
lcd.setCursor(0, 0);
lcd.print("Vagas livres = ");
lcd.print(vagaslivres);
lcd.setCursor(0, 1);
lcd.print("Vagas ocup. = ");
lcd.print(vagasocupadas);
}