jo stimmt vergass sorry die 3 ms sind ja blitzartig verstrichen das es eigendlich direkt los geht^^
Code:
#include <avr/io.h>
#include "i2cmaster.h"
#include "asuro.h"
#define Display 0x74 // device address of Display, see datasheet
#define aus MotorDir(BREAK,BREAK)
#define go {MotorSpeed(150,150);MotorDir(FWD,FWD);}
#define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);}
int speed()
{
int rightspeed,leftspeed;
int leftold,rightold;
Encoder_Set(0,0); // reset encoder
leftold=encoder[LEFT];
rightold=encoder[RIGHT];
Msleep(300);
leftspeed=encoder[LEFT]-leftold;
rightspeed=encoder[RIGHT]-rightold;
//SerWrite(" speed Left,Right ",19);
//PrintInt(leftspeed);
//PrintInt(rightspeed);
return leftspeed+rightspeed;
}
int main(void)
{
int n,v,nullspeed;
int ret=0;
Init();
BackLED(ON,ON);
i2c_init();
ret = i2c_start(Display+I2C_WRITE);
if ( ret )
{
i2c_stop();
StatusLED(RED);
while(1);
}
Msleep(3);
i2c_write(0x00);
Msleep(3);
i2c_write(0x01);
Msleep(3);
i2c_write(0x2E);
Msleep(3);
i2c_write(0x0F);
Msleep(3);
i2c_write(0x06);
Msleep(3);
i2c_stop();
ret = i2c_start(Display+I2C_WRITE);
if ( ret )
{
i2c_stop();
StatusLED(RED);
while(1);
}
Msleep(3);
i2c_write(0x40); //Kontroll Byte
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xC8); //H
Msleep(3);
i2c_write(0xC5); //E
Msleep(3);
i2c_write(0xCC); //L
Msleep(3);
i2c_write(0xCC); //L
Msleep(3);
i2c_write(0xCF); //O
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xC9); //I
Msleep(3);
i2c_write(0xA7); //´
Msleep(3);
i2c_write(0xCD); //M
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xC1); //A
Msleep(3);
i2c_write(0xD3); //S
Msleep(3);
i2c_write(0xD5); //U
Msleep(3);
i2c_write(0xD2); //R
Msleep(3);
i2c_write(0xCF); //O
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xC3); //C
Msleep(3);
i2c_write(0xD2); //R
Msleep(3);
i2c_write(0xC5); //E
Msleep(3);
i2c_write(0xC1); //A
Msleep(3);
i2c_write(0xD4); //T
Msleep(3);
i2c_write(0xC5); //E
Msleep(3);
i2c_write(0xC4); //D
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xA0); //leer
Msleep(3);
i2c_write(0xC2); //B
Msleep(3);
i2c_write(0xD9); //Y
Msleep(3);
i2c_write(0x2E); //>
Msleep(3);
i2c_write(0xC4); //D
Msleep(3);
i2c_write(0xC1); //A
Msleep(3);
i2c_write(0xCE); //N
Msleep(3);
i2c_write(0xCA); //J
Msleep(3);
i2c_write(0xCF); //O
Msleep(3);
i2c_write(0x2F); //<
Msleep(3);
i2c_write(0x2F); //<
Msleep(3);
Encoder_Init();
StatusLED(OFF);
SerWrite("\n\rASURO OK\n\r",8);
go;
Msleep(500);
nullspeed=speed()-10;
while(1)
{
v=speed();
SerWrite("\n\r speed ",9);
PrintInt(v);
if(v<nullspeed)
{
backturn;
go;
Msleep(500);
}
}
return 0;
}
so funktioniert alles. war nur für test zwecke
Lesezeichen