Projekte
Floooooo24
Bkit-XS-tutorial
main.cpp
Projekte
Forum
Doku
Öffentliche Projekte
Startseite
Beispielprogramme
Projekte von anderen
Welcome
Username
Passwort
Eingeloggt bleiben
Zugangsdaten vergessen?
Registrieren
Projektverwaltung
⇨ Please choose! ⇦
——————————————————
✎ Create new project...
★ Browse existing projects...
——————————————————
⚬ MotorTest#1
⚬ C Tutorial 8#1
⚬ NIBO2 C Project#1
⚙ C Tutorial 15#1
⚬ 2010_11_18_el_test001#1
Bkit-XS-tutorial
main.cpp
Project details
Compiler settings
Nachrichten
Sie sind nicht eingeloggt.
Neuigkeiten
★
NiboRoboLib 3.6
2017-01-17: Neue Version 3.6
★
NiboRoboLib 3.4.1
2016-04-16: Neue Version 3.4.1
★
Coding Tutorial
2015-11-22: Jetzt auch für den NIBO burger!
Site-Statistic
7432 private projects
378 public projects
16179195 lines compiled
58194 builds
NIBO
@
Bkit-XS-tutorial/main.cpp [read only]
/* Dies Wäre nicht ohne das Mitglied nibobee möglich gewesen, des Beispielprogramm ich Verstehen konnte und dadurch das hier überhaubt möglich gewessen wäre. Auch an Arcanix der mich im Forum auf die Schaltpläne aufmerksam gemacht hat in denen ich dann die Pin Bezeichnungen raus lesen konnte. Und natürlich auch Workwind ohne den ich weder hier schreiben könnte und der im Forum immer höflich und hilfs bereit ist. Und meinen Herzlichsten dank an meinen Vater der mich immer Wieder geschoben hat. Befehle zum Ansteuern des BKit-XS: IR-LED: clear_output_groupbit(IO_EXT, [OUTPUT]) schaltet die IR-LED ein (mögliche Werte nach den Portnamen bennannt(für die Entfernungs Sensoren 2 und 3)) set_output_groupbit(IO_EXT, [OUTPUT]) schaltet die IR-LED aus (mögliche Werte nach den Portnamen bennannt(für die Entfernungs Sensoren 2 und 3)) z. B.: clear_output_groupbit(IO_EXT, 2); schaltet die Linke IR-Led ein set_output_groupbit(IO_EXT, 2); schalten die Like IR-Led aus Erklärung: Da die IR-Sensoren mit einem Pin an Vocc. (+5 Volt) angeschlossen ist muss der unterschied zwischen Pin 2 und dem Vocc. -5 Volt enstehen um die IR-LED leuchten zu lassen, das kann man ereichen , in dem man mit dem Befehl clear_output_groupbit(IO_EXT, 2) 0 Volt an den Port C 2(Pin 2 von x2) anlegt und die der Strom vom Pin2 durch die Led zu Vocc. fließt und dadurch die Led Leuchtet. Um nun die Led wieder auszuschalten muss man auf den Pin 2 5 Volt anlegen, wo durch der Spannungs unterschied zwischen Vocc. und Pin 2 gleich 0 Volt beträgt und kein Strom mehr fließt. Das Kann man mit dem Befehl set_output_groupbit(IO_EXT, 2) erreichen. In der Erklärung verwende ich den linken Sensor, das gleiche Funktionirt natürlich auch mit dem rechten Sensor, man muss einfach nur die 2 in den Befehlen durch eine 3 ersetzen. Sensor: analog_getValue(ANALOG_EXT[INPUT]); Misst den anliegenden Wert an dem Port und Gibt ihn Zurück (mögliche Werte nach den Portnamen bennannt(für die Entfernungs Sensoren 2 und 3)) z. B.: int rval; rval=analog_getValue(ANALOG_EXT3); Misst den Wert des rechten IR-Sensors Erklärung: Der Pin 1 heist auch An2, das An steht für Analog und die 2 für x2 also den Erweiterungs slot, oder auch PA2, was für Port A 2x steht. Er ist also ein Anaglogereingang, den man mit dem Befehl analog_getValue(ANALOG_EXT2) auslesen kann und in einer Variable speichern kann. Der Sensor misst die Reflektierte Strahlung die von der LED ausgeht und gibt den Wert an den Pin 2 zurück der über einen Pull down (Zieh runter) Wiederstand, der dafür sorgt das die Spannung auf den Pin wie der entweichen kann (sonst würde der Wert nur steigen und nur gans langsam wieder runter gehen), geerdet ist. Auch hier lässt sich das wieder auf den rechten Sensor ummünzen, in dem man wieder die 2 durch eine 3 ersetzt. ich habe hier noch die ganzen Pin bezeichnungen der Erweiterungsslots x1-x5: x1: pin1 = AN0/PA0/ADC0 pin2 = AN1/PA1/ADC1 pin3 = GND/minus/ground pin4 = voc/plus x2: pin1 = AN2/PA2/ADC2 Analoger eingang pin2 = PC2/TCK Digitaler ausgang pin3 = GND/minus/ground pin4 = voc/plus x3: pin1 = AN3/PA3/ADC3 Analoger eingang pin2 = PC3/TMS Digitaler ausgang pin3 = GND/minus/ground pin4 = voc/plus x4: das ist alls eine IC2 Schnittstelle verwendbar. pin1 = PC0/SCL pin2 = PC1/SDA pin3 = GND/minus/ground pin4 = voc/plus x5: pin1 = RXD/PD0 pin2 = TXD/PD1 pin3 = GND/minus/ground pin4 = voc/plus Mehr kann ich leider auch nicht sagen. Anschließend ist hier noch ein Programm, das hoffentlich jetzt verständlich ist: Mit diesem Programm folgt der NIBObee einem Gegenstand der vor ihm steht und Fährt auf ihn zu. und Wer Recht- oder Linksschreibfehler findet darf sie Behalten. */ #include <nibobee/robomain.h> // Librarys werden eigebunden #include <nibobee/iodefs.h> #include <nibobee/motpwm.h> #include <nibobee/motpid.h> #include <nibobee/analog.h> #include <nibobee/led.h> #include <nibobee/delay.h> #include <nibobee/clock.h> #include <nibobee/odometry.h> #include <nibobee/sens.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> uint8_t toggle; // hier werden Variablen initialisiert int16_t lval, rval; void setup() { motpwm_init(); // in diesem Compierler müssen die Motoren und andere Sensoren initialisiert werden } void loop() { activate_output_group(IO_LEDS); // LED bits als Output sens_init(); // Hier werden Weitere sachen initialisiert analog_init(); led_set(LED_L_RD, 1); // Wie wärs mit nem kleinen Countdown? led_set(LED_R_RD, 1); _delay_ms(500); led_set(LED_L_RD, 0); led_set(LED_R_RD, 0); _delay_ms(500); activate_output_groupbit(IO_EXT, 2); // Port Bits für die IR-LEDs aktivieren activate_output_groupbit(IO_EXT, 3); while(1){ sei(); clear_output_groupbit(IO_EXT, 2); // Schaltet die IR-LEDs ein clear_output_groupbit(IO_EXT, 3); _delay_ms(10); // eine kurze prell zeit damit die Messung genauer ist lval = analog_getValue(ANALOG_EXT2);// Messen der Reflektierten Strahlung. rval = analog_getValue(ANALOG_EXT3); set_output_groupbit(IO_EXT, 2); // ausschalten der IR-LEDs set_output_groupbit(IO_EXT, 3); _delay_ms(10); // wieder eine prell Zeit lval -= analog_getValue(ANALOG_EXT2);// abzeiehen der Messwerte ohen die IR-LEDs um die Hintergrundstrahlung rauszurechnen. rval -= analog_getValue(ANALOG_EXT3); lval *= 50; // Vertärken der Messwerte die Maximal auf einen wert von 15 steigen rval *= 54; // eigentlich müssten beide mal 54 genommen werden aber meine linker sensor bestrahlt sich selbst, so das sich der NIBObee // auch ohne das etwas vor ihm ist sich dreht. motpwm_setLeft(rval); //die verstärkten Messwerte auf die Motoren übertragen. motpwm_setRight(lval); } }
Compiler results:
Werbung
Online
alexandriavvs5917
Bogdanlup
charlottemcanulty895
phil88
tricialillibridge3
warrenhinder6456