{
//configurapuertoDDRD=0b0000000000;DDRC=0b0000000001;while(1){printf("lee\n");
// activa sensor X
PORTD = 0b0000000100;
_delay_ms(ESPERA_SENSORES);
lectura_sensor_x = PINC & 0b0000000001;
printf("lectura %d \n", lectura_sensor_x);
_delay_ms(PAUSA_EN_LECTURA);
//PORTD = 0b0000000000;
//_delay_ms(PAUSA_EN_LECTURA);
}
}
Mi objetivo es alternar el nivel de voltaje en el emisor IR y el fototransistor, 0 a 5v , y leer el valor de voltaje entre la resistencia de tierra y 10k, solo cuando el pin D2 está alto .
Todo funciona bien sin la línea conectada al pin digital_read A0 (no ADC).
Los valores entre el suelo y la resistencia de 10 k son 0,8 V o 3,26 V cuando muevo un obstáculo en medio del emisor de infrarrojos y el fototransistor.
Cuando conecto el cable digital_read, el voltaje cae a casi 0, y la lectura en arduino_nano es siempre de 0 bits.
He habilitado y deshabilitado la resistencia de recuperación interna en A0 sin éxito.
¿Qué pasa?
Mi propósito de cambiar el voltaje en los componentes optoelectrónicos es aumentar su vida útil.
Como escribió @Chris Stratton, cambiar de alta / baja al emisor IR es casi suficiente para reducir el flujo de corriente a través del fototransistor.
Omití el transistor, conecté el fototransistor solo con una resistencia de 10k y detecté el nivel de voltaje en el punto transistor-resistencia.
Veo que, en el estado bajo del emisor de infrarrojos, la corriente a través del fototransistor se reduce al 11%. Esto es suficiente, creo, para enfriar el componente.