Projekte
BirgerT
nibo2_MyWorx
nibo2_sensors.c
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
nibo2_MyWorx
liesmich.txt
main.c
nibo2_akku.c
nibo2_akku.h
nibo2_audio.c
nibo2_audio.h
nibo2_audio_titels.c
nibo2_globaldef.h
nibo2_parameter.c
nibo2_parameter.h
nibo2_sensors.c
nibo2_sensors.h
nibo2_timer2.c
nibo2_timer2.h
nibo2_tour.c
nibo2_tour.h
nibo2_xbmgfx.c
nibo2_xbmgfx.h
Studio6_m...x_hex.txt
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
7427 private projects
385 public projects
16181052 lines compiled
58220 builds
NIBO
@
nibo2_MyWorx/nibo2_sensors.c [read only]
/****************************************************************** Nibo Eingabe Taster über Distanzsensoren BirgerT 06.05.2012 BSD License see "liesmich.txt" ******************************************************************/ #include "nibo2_sensors.h" //********************* Merker Tastenstatus // aktueller Zustand volatile uint8_t distance_free = 0; volatile uint8_t distance_far = 0; volatile uint8_t distance_near = 0; volatile uint8_t distance_low = 0; // Bit gesetzt bei Flanke 0->1 volatile uint8_t distance_far_S; volatile uint8_t distance_near_S; volatile uint8_t distance_low_S; // Bit gesetzt bei Flanke 1->0 volatile uint8_t distance_far_F; volatile uint8_t distance_near_F; volatile uint8_t distance_low_F; /* // Tasten Bits #define BIN_DRS 0 // Distanz Rechts Seite #define BIN_DRF 1 // Distanz Rechts Front #define BIN_DF 2 // Distanz Front #define BIN_DLF 3 // Distanz Links Front #define BIN_DLS 4 // Distanz Links Seite #define BIN_SW3 5 // Taster SW3 */ void sensors_update(void) { // Merker für Eingabe Status vorbereiten distance_far_F = distance_far; distance_near_F = distance_near; distance_low_F = distance_low; distance_far_S = ~distance_far; distance_near_S = ~distance_near; distance_low_S = ~distance_low; // Distanzsensoren aktualisieren.. copro_update(); // Distanzsensorwerte normalisieren und in ButtonBits einlesen for(uint8_t i = 0; i<5; i++) { // auf 0..255 normalisieren copro_distance[i] = copro_distance[i] /256; if(copro_distance[i] > 255) copro_distance[i] = 255; // Distanzsensoren als Eingabe Taster benutzen if(copro_distance[i] <= DIST_LIMIT_FREE) SetBit(distance_free,i); else ClrBit(distance_free,i); // Distanzsensoren als Eingabe Taster benutzen if((copro_distance[i] > DIST_LIMIT_FREE) && \ (copro_distance[i] <= DIST_LIMIT_FAR)) SetBit(distance_far,i); else ClrBit(distance_far,i); // Distanzsensoren als Eingabe Taster benutzen if((copro_distance[i] > DIST_LIMIT_FAR) && \ (copro_distance[i] <= DIST_LIMIT_NEAR)) SetBit(distance_near,i); else ClrBit(distance_near,i); // Distanzsensoren als Eingabe Taster benutzen if(copro_distance[i] > DIST_LIMIT_NEAR) SetBit(distance_low,i); else ClrBit(distance_low,i); } // Switch S3 in Eingabestatus merken if((_BV(IO_INPUT_1_BIT)) == get_input_bit(IO_INPUT_1)) \ ClrBit(distance_low,BIN_SW3); else SetBit(distance_low,BIN_SW3); // Bits für Flanke 0->1 maskieren distance_far_S &= distance_far; distance_near_S &= distance_near; distance_low_S &= distance_low; // Bits für Flanke 1->0 maskieren distance_far_F &= ~distance_far; distance_near_F &= ~distance_near; distance_low_F &= ~distance_low; } void sensors_show(void) { // Statusanzeige Distanzsensor betätigt uint8_t j = 0; // Index Sensorwert // 6 LEDs ansteuern for(uint8_t i = 0; i<6; i++) { if(GetBit(distance_free,j)) leds_set_status(0,7-i); else if(GetBit(distance_far,j)) leds_set_status(1,7-i); else if(GetBit(distance_near,j)) leds_set_status(3,7-i); else if(GetBit(distance_low,j)) leds_set_status(2,7-i); // Frontsensor = beide vorderen StatusLEDs if(i!=2) j++; } // Taster SW3 hinten links gruen anzeigen // if(GetBit(distance_low,BIN_SW3)) leds_set_status(1,1); // else leds_set_status(0,1); }
Compiler results:
Werbung
Online
Bogdanasf
josch