Джойстик (двух- осевой резистор от пульта плейстейшн)подключен к плате с мегой, мега ацепирует напряжение с средних движков потенциометров X и Y.
Вот код преобразования аналогового сигнала в цифру:
float ADC_Measured_Voltage(unsigned char Channel) {
unsigned long Measured_U=0;
unsigned int temp_ADC=0;
unsigned char i=0;
switch (Channel) { /*Переключалка каналов*/
case 0:
ADMUX &= ~(1<<MUX0);
break;
case 1:
ADMUX |= (1<<MUX0);
break;
}
for (i=0;i<250;i++) {
ADCSRA |= (1<<ADSC);
while((ADCSRA&(1<<ADSC))!=0);
Measured_U +=ADC;
}
return( ((float)Measured_U) * ( 5.0/(1024.0*250.0)) );
}
На выходе я получаю напряжениее с типом данных float, но по радиоканалу я передавать float не могу, и делаю так:
Tx_Buffer[0]=85; /*Начало пакета*/
Tx_Buffer[1]=(int)(((255*ADC_Measured_Voltage(0))/4.8)+0.5);
Tx_Buffer[2]=(int)(((255*ADC_Measured_Voltage(1))/4.8)+0.5);
Status_Tx=Transmit_Package_CC1101(Tx_Buffer,3);
То есть я сначала привожу результат измерения к новой шкале (было от 0 до 4,8 получаю от 0 до 255) а потом привожу результат к "in"t и округляюсь.
Так работает, но скорее всего это я не правильно делаю, что подскажите?
Спасибо!