#define BUFFER_SIZE 4
int buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int estado = 0; // 0 = produtor, 1 = consumidor
void setup() {
// inicializar pinos, variáveis, etc.
}
void loop() {
switch (estado) {
case 0: // produtor
// verificar se o buffer está cheio
if ((in + 1) % BUFFER_SIZE != out) {
buffer[in] = produzir();
in = (in + 1) % BUFFER_SIZE;
estado = 1;
}
break;
case 1: // consumidor
// verificar se o buffer está vazio
if (in != out) {
consumir(buffer[out]);
out = (out + 1) % BUFFER_SIZE;
estado = 0;
}
break;
}
}