-diese Library dient zur Ansteuerung von bis zu 8 Modellbau-Servos
-es wird nur ein 16bit Timer dafür benötigt
Funktionen :
1 2 | void MK3_INIT_SERVO(void); // zum initialisieren void MK3_SERVO_SET(SERVO_NR nr,unsigned int pos); // um einen Servo zu bewegen |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | //----------------------------------------------------------------------------- // Title : bsp_ub031_mk3_servo //----------------------------------------------------------------------------- // Funktion : Servo-Funktionen // Schaltung : myAVR MK3 //----------------------------------------------------------------------------- // Prozessor : ATMega2560 // Takt : 16 MHz // Sprache : C // Date : 24.11.2012 // Version : 1.1 // Autor : UB //----------------------------------------------------------------------------- #define F_CPU 16000000 #include <avr/io.h> #include <UB_MK3_2560/MK3_2560_SERVO.h> #include <UB_MK3_2560/MK3_2560_ADC.h> //----------------------------------------------------------------------------- // Hinweis : // - Eine Leitung von Poti-1 nach Port-F0 muss eingebaut sein // - Eine Leitung von Poti-2 nach Port-F1 muss eingebaut sein // - Eine Leitung von Poti-3 nach Port-F2 muss eingebaut sein // - Servo-A muss an L0 angeschlossen sein // - Servo-B muss an L1 angeschlossen sein // - Servo-C muss an L2 angeschlossen sein // // - das Programm steuert mit 3 Potis die Position von 3 Servos //----------------------------------------------------------------------------- int main (void) { unsigned int poti_wert=0; unsigned int pause=0; MK3_INIT_ADC(); // init vom ADC MK3_INIT_SERVO(); // init vom SERVO while (true) { pause++; if(pause>1000) { // kleine Pause pause=0; // Poti1 einlesen und ServoA bewegen poti_wert=MK3_ADC_READ_CH(ADC0); MK3_SERVO_SET(SERVO_1,poti_wert); // Poti2 einlesen und ServoB bewegen poti_wert=MK3_ADC_READ_CH(ADC1); MK3_SERVO_SET(SERVO_2,poti_wert); // Poti3 einlesen und ServoC bewegen poti_wert=MK3_ADC_READ_CH(ADC2); MK3_SERVO_SET(SERVO_3,poti_wert); } } return 0; } |
Hier die Library zum download :