-
jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa
=P~ =P~ =P~ =P~ =P~ =P~ =P~ =P~ =P~ =P~ =P~ =P~
MEIN ERSTES PROGRAMM IST FERTIG:
Danke für die Hilfe...hatte mir das zwar etwas leichter vorgestellt aber was soll:)...
jetzt wird erstmal stundenlang licht an und aus gemacht und mein Robo sagt mir bescheid:):)
-
Hier nochmal für alle,die auch Spaß am Licht aus und an machen haben wollen , das fertige Prog.
Code:
#include "RP6RobotBaseLib.h"
unsigned char brightOld=0;
unsigned char bright=0;
void light(void){
uint16_t LSR = readADC(ADC_LS_R);
if((LSR<1000)&&(LSR>400)){
bright = 0;
}
else if(LSR<=400){
bright = 1;
}
else if (LSR>=1000){
bright = 2;
}
if(bright != brightOld){
switch(bright){
case 0:
writeString_P("\nSchon bessa:)!!\n");
break;
case 1:
writeString_P("\nMach das Licht an!\n");
mSleep(1000);
break;
case 2:
writeString_P("\nMir ist es hier zu hell!\n");
mSleep(1000);
break;
}
brightOld=bright;
}
}
void main (void)
{
initRobotBase();
while(true)
{
light();
}
return 0;
}
-
Hallo
Ich wollte euch eigentlich nicht zusätzlich verwirren. Der Code ist auch nicht von mir, er stammt aus der Library (RP6RobotBaseLib.c) und sollte nur zeigen, wie dort der Wert für adcLSR bei jedem 6. Aufruf aktuallisiert wird. Als Teil der Library wird der Code auch autmatisch mit dem Programm kompiliert, deshalb gibt es eine Fehlermeldung, wenn ihr die Funktion mit dem selben Namen zusätzlich noch in das Programm schreibt. Das war natürlich etwas fies es ohne Quelle anzuführen...
Das Task-System ist ja recht pfiffig, aber hat eben auch seine Fallen. Wenn man ein Programm mit nur einer Funktion schreibt, kann man auch darauf verzichten und die Helligkeitswerte mit readADC() direkt einlesen. Aber das habt ihr ja inzwischen selbst gekundet. Glückwunsch.
Gruß
mic
-
zugegeben, dass hat mich wirklich verwirrt allerdings war ich am Enden auch selber darauf gekommen, dass du dies nur aus der Library gezogen hast:)..