ETA10
08.12.2009, 21:09
Hallo alle zusammen,
Ich finde es gut das so viele leute ihre unterstützung bieten und aus diesem Grund wollte ich jetzt auch mal was fragen.
Um es vorweg zu sagen ich habe keine wirkliche ahnung vom Programmieren. Ich kenne mich mit Schaltungen aus aber mit Programmierung habe ich nicht viel zu tun. So, nun mein anliegen. Ich muss bis übermorgen ein Programm für alle drei erweiterungsplatinen des ASURO fertig gestellt haben. Mein Lehrer hat mir die beiden ASURO bücher gegeben, damit ich mir die Programmer raus schreiben kann.
Ich habe jetzt die frage ob ihr vielleicht wisst, wie ich die 3 Programme der Erweiterungsplatine zu einem Programm zusammenfassen kann damit es auch läuft? Die Platine dazu ist schon fertig gestellt doch von der Programmierung und der Port belegung habbe ich nicht so viel ahnung.
Es geht um den Ultraschallsensor, das LC-Display und die Snake-Vision.
Ultrschall
#inlude "asuro.h"
void LocalInit(void)
{
TCCR2=(1<<WGM21) | (1<<CS20);
OCR2=0x64;
ADCSRA=0x00;
ACSR=0x02;
ADMUX=0x03;
SFIOR|=(1<<ACME);
DDRD&=~(1<<6);
}
void Ping (unsigned char length)
{
count 72kHz=0;
TCCR2 = (1<<WGM21) | (1<<COM20) | (1<<CS20);
while (count72kHz<length)
{
OCR2=ox64+length/2-count72kHz;
}
TCCR2 = (1<<WGM21) | (1<<CS20);
OCR2=0x64;
}
int main (void)
{
int pos,i;
int posmarker;
Init();
LocalInit();
while(1)
{
posmarker=0;
Ping(20);
for (pos=0; pos<100; pos++)
{
Sleep(10);
if ((ACSR&(1<<ACI))!=0)
{
if (posmarker==0) {posmarker=pos;}
}
ACSR|=(1<<ACI);
}
if (posmarker>10)
{
StatusLED(Green);
MotorDir(FWD,FWD);
MotorSpeed(100,100);
}
else
{
StatusLED(RED);
MotorDir(FWD,RWD);
MotorSpeed(0,100);
for (i=0; i<100; i++) {Sleep(200);}
}
}
return 0;
}
LCD
#include "asuro.h"
#include "lcd.h"
int main(void)
{
Init();
lcd_init(LCD_DISP_ON_CURSOR_BLINK);
lcd_puts("HALLO AE31")
for (;;)
{
if (LCD_KEY_BLUE) {
lcd_clrscr();
lcd_puts_P("Dimi");
while(LCD_KEY_BLUE);
}
if (LCD_KEY_YELLOW) {
lcd_clrscr();
lcd_puts_P("Kuhn");
while(LCD_KEY_YELLOW);
}
if (LCD_KEY_RED) {
lcd_clrscr();
lcd_puts_P("Motchi");
while(LCD_KEY_RED);
}
}
return 0;
}
Snake-Vision
#include "asuro.h"
#define THRESH1 20
#define THRESH1 80
#define THRESH1 200
void Thermaldata(unsigned int *data)
{
ADMUX=(1<<REFS0) | (1<<REFS1) | IR_LEFT;
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF)));
ADCSRA |= (1<<ADIF);
data[0] = ADCL + (ADCH<<8);
ADMUX = (1<<REFS0) | (1<<REFS1) | IR_RIGHT;
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF)));
ADCSRA |= (1<<ADIF);
data[1]= ADCL + (ADCH<<8);
}
int main (void)
{
unsigned int tdata[2];
unsigned int sped;
signed int diff, sum;
Init();
MotorDir(FWD,FWD);
while(1)
{
ThermalData(tdata);
sum=tdata[0]+tdata[1];
if (sum>TRESH1) {
StatusLED(GREEN);
Speed=100;
if (sum>TRESH1) {
StatusLED(YELLOW);
Speed=120;
}
if (sum>TRESH1) {
StatusLED(RED);
Speed=140;
}
diff=((signed)tdata[0]-(signed)tdata[1])*32/sum;
if (diff>4)
{
BackLED(ON,OFF);
MotorSpeed(0,speed);
}
else if (diff<-4)
{
BackLED(OFF,ON);
MotorSpeed(speed,0);
}
else
{
BackLED(OFF,OFF);
MotorSpeed(speed,speed);
}
}
return 0;
}
So, das sind die 3 Programme aus den 2 Büchern mehr Spass mit ASURO 1 und 2.
Es wäre toll, wenn ihr mir mit dem Programm weiter helfen könntet.
Ein grosses danke schonmal im Vorraus.
Ich finde es gut das so viele leute ihre unterstützung bieten und aus diesem Grund wollte ich jetzt auch mal was fragen.
Um es vorweg zu sagen ich habe keine wirkliche ahnung vom Programmieren. Ich kenne mich mit Schaltungen aus aber mit Programmierung habe ich nicht viel zu tun. So, nun mein anliegen. Ich muss bis übermorgen ein Programm für alle drei erweiterungsplatinen des ASURO fertig gestellt haben. Mein Lehrer hat mir die beiden ASURO bücher gegeben, damit ich mir die Programmer raus schreiben kann.
Ich habe jetzt die frage ob ihr vielleicht wisst, wie ich die 3 Programme der Erweiterungsplatine zu einem Programm zusammenfassen kann damit es auch läuft? Die Platine dazu ist schon fertig gestellt doch von der Programmierung und der Port belegung habbe ich nicht so viel ahnung.
Es geht um den Ultraschallsensor, das LC-Display und die Snake-Vision.
Ultrschall
#inlude "asuro.h"
void LocalInit(void)
{
TCCR2=(1<<WGM21) | (1<<CS20);
OCR2=0x64;
ADCSRA=0x00;
ACSR=0x02;
ADMUX=0x03;
SFIOR|=(1<<ACME);
DDRD&=~(1<<6);
}
void Ping (unsigned char length)
{
count 72kHz=0;
TCCR2 = (1<<WGM21) | (1<<COM20) | (1<<CS20);
while (count72kHz<length)
{
OCR2=ox64+length/2-count72kHz;
}
TCCR2 = (1<<WGM21) | (1<<CS20);
OCR2=0x64;
}
int main (void)
{
int pos,i;
int posmarker;
Init();
LocalInit();
while(1)
{
posmarker=0;
Ping(20);
for (pos=0; pos<100; pos++)
{
Sleep(10);
if ((ACSR&(1<<ACI))!=0)
{
if (posmarker==0) {posmarker=pos;}
}
ACSR|=(1<<ACI);
}
if (posmarker>10)
{
StatusLED(Green);
MotorDir(FWD,FWD);
MotorSpeed(100,100);
}
else
{
StatusLED(RED);
MotorDir(FWD,RWD);
MotorSpeed(0,100);
for (i=0; i<100; i++) {Sleep(200);}
}
}
return 0;
}
LCD
#include "asuro.h"
#include "lcd.h"
int main(void)
{
Init();
lcd_init(LCD_DISP_ON_CURSOR_BLINK);
lcd_puts("HALLO AE31")
for (;;)
{
if (LCD_KEY_BLUE) {
lcd_clrscr();
lcd_puts_P("Dimi");
while(LCD_KEY_BLUE);
}
if (LCD_KEY_YELLOW) {
lcd_clrscr();
lcd_puts_P("Kuhn");
while(LCD_KEY_YELLOW);
}
if (LCD_KEY_RED) {
lcd_clrscr();
lcd_puts_P("Motchi");
while(LCD_KEY_RED);
}
}
return 0;
}
Snake-Vision
#include "asuro.h"
#define THRESH1 20
#define THRESH1 80
#define THRESH1 200
void Thermaldata(unsigned int *data)
{
ADMUX=(1<<REFS0) | (1<<REFS1) | IR_LEFT;
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF)));
ADCSRA |= (1<<ADIF);
data[0] = ADCL + (ADCH<<8);
ADMUX = (1<<REFS0) | (1<<REFS1) | IR_RIGHT;
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF)));
ADCSRA |= (1<<ADIF);
data[1]= ADCL + (ADCH<<8);
}
int main (void)
{
unsigned int tdata[2];
unsigned int sped;
signed int diff, sum;
Init();
MotorDir(FWD,FWD);
while(1)
{
ThermalData(tdata);
sum=tdata[0]+tdata[1];
if (sum>TRESH1) {
StatusLED(GREEN);
Speed=100;
if (sum>TRESH1) {
StatusLED(YELLOW);
Speed=120;
}
if (sum>TRESH1) {
StatusLED(RED);
Speed=140;
}
diff=((signed)tdata[0]-(signed)tdata[1])*32/sum;
if (diff>4)
{
BackLED(ON,OFF);
MotorSpeed(0,speed);
}
else if (diff<-4)
{
BackLED(OFF,ON);
MotorSpeed(speed,0);
}
else
{
BackLED(OFF,OFF);
MotorSpeed(speed,speed);
}
}
return 0;
}
So, das sind die 3 Programme aus den 2 Büchern mehr Spass mit ASURO 1 und 2.
Es wäre toll, wenn ihr mir mit dem Programm weiter helfen könntet.
Ein grosses danke schonmal im Vorraus.