//pretty simple servo driver kote for 9channels with STM32F103C8T6 have fun [MEOW] #include //serve standart lib includet in stm32-master lib Servo servo1;Servo servo2;Servo servo3;Servo servo4;Servo servo5;Servo servo6;Servo servo7;Servo servo8;Servo servo9;//define servonames #define channelz 10 //using it like this caused define numbe can be used by init array[solarge] uint8_t servoposis[10],dd; void setup() { delay(300);//capacitor carging servo1.attach(PB9);servo2.attach(PB8);servo3.attach(PB7); servo4.attach(PB6); servo5.attach(PA0); servo6.attach(PA10); servo7.attach(PA9); servo8.attach(PA8);servo9.attach(PA1);//set servopins } void loop(){zeitreise();}// long littletime=millis();long slowtime=micros(); void zeitreise(void){ while ((millis()- littletime) >= 50) {dd++;if(dd>9){dd=0;}machservo();littletime = millis(); }}//aply to setvos (with space between caused needet drain tohigh is all sevos starting same time) void rateservo(void){ for (uint8_t lauf=0; lauf <9;lauf++){servoposis[lauf]=random(0,12)*15;}}//get random values 0-180° void machservo(void){ if(dd==0){servo1.write(servoposis[0]);}//apply arrayvalue to servo if(dd==1){servo2.write(servoposis[1]);} if(dd==2){servo3.write(servoposis[2]);} if(dd==3){servo4.write(servoposis[3]);} if(dd==4){servo5.write(servoposis[4]);} if(dd==5){servo6.write(servoposis[5]);} if(dd==6){servo7.write(servoposis[6]);} if(dd==7){servo8.write(servoposis[7]);} if(dd==8){servo9.write(servoposis[8]);} if(dd==9){rateservo();} }