PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Nibo sollen kommunizieren



ehenkes
27.06.2024, 22:19
Ein Nibo ver.1 und ein Nibo ver.2 sollen miteinander kommunizieren. Wie erfolgt das am einfachsten? Gibt es Vorbilder?

Nibo ist in der Lage RC5-Signale zu verarbeiten.

#include <stdlib.h>
#include <avr/interrupt.h>

#include "nibo/niboconfig.h"
#include "nibo/iodefs.h"

#include "nibo/delay.h"
#include "nibo/adc.h"
#include "nibo/pwm.h"
#include "nibo/i2cmaster.h"
#include "nibo/display.h"

#include "nibo/bot.h"
#include "nibo/leds.h"
#include "nibo/gfx.h"
#include "nibo/irco.h"
#include "nibo/floor.h"

#define LOBYTE(x) (uint8_t)((uint16_t)x)
#define HIBYTE(x) (uint8_t)(((uint16_t)x)>>8)

// Hilfsfunktion
void print_hex (uint8_t val);

int main()
{

sei(); // enable interrupts

i2c_init();
pwm_init();
display_init();

bot_init();
leds_init();
gfx_init();

irco_startMeasure();
leds_set_displaylight(1000);

while(1)
{
irco_update();

gfx_move(0,0);
gfx_print_text("RC5: ", 1);

gfx_move(30,0);
print_hex(HIBYTE(irco_rc5_cmd));
print_hex(LOBYTE(irco_rc5_cmd));

// Fernbedienung Einstellung: TV1, 023
switch(LOBYTE(irco_rc5_cmd)
{
case 0x01: //1 (Ziffernblock der Fernbedienung)
for(i=0; i<6; ++i)
leds_set_status(LEDS_GREEN,i);
break;

case 0x02: //2
for(i=0; i<6; ++i)
leds_set_status(LEDS_ORANGE,i);
break;

case 0x03: //3
for(i=0; i<6; ++i)
leds_set_status(LEDS_RED,i);
break;
case 0x00: //0
for(i=0; i<6; ++i)
leds_set_status(LEDS_OFF,i);
break;
// etc.
}
}

return 0;
}

void print_hex (uint8_t val)
{
char c1=val/16;
char c2=val%16;
if (c1<10) c1+='0'; else c1+='a'-10;
if (c2<10) c2+='0'; else c2+='a'-10;
gfx_print_char(c1, 0);
gfx_print_char(c2, 0);
}


Wie kann man entsprechende Signale vom Nibo senden? Klappt solche Kommunikation?