====== Sensores ====== //Relacionado com: [HW] [[pt:hardware:homelab:sensor]]// Esta biblioteca contém funções para uso de diferentes sensores do kit HomeLab. ===== Tipos ===== * **//ir_distance_sensor//** \\ Estrutura dos parâmetros de cálculo de distância do sensor de distância por infravermelhos. A fórmula para o cálculo da distância é //a / (ADC + b) - k//. Membros da estrutura: * //a// - Dividendo. * //b// - Constante não-linear. * //k// - Constante de linearização. ===== Constantes ===== * **//ir_distance_sensor GP2Y0A21YK//** \\ Sharp GP2Y0A21YK distance calculation formula parameters. ===== Funções ===== * **//signed short thermistor_calculate_celsius(unsigned short adc_value)//** \\ Calcula a temperatura do termómetro em graus Celsius a partir do resultado de conversão do ADC. As funções usam uma tabela de conversão pré-calculada. Parâmetros: * //adc_value// - Resultado da conversão ADC (10 bits com voltagem de referência de +5 V). * Devolve a temperatura em graus Celsius entre -20 e 100 graus. * **//signed short ir_distance_calculate_cm(ir_distance_sensor sensor, unsigned short adc_value)//** \\ Calcula a distância a partir do resultado do ADC, recebido da voltagem do sensor de distância por infravermelhos. Parâmetros: * //sensor// - Parâmetros de cálculo do sensor de distância. * //adc_value// - Resultado da conversão ADC (10 bits com voltagem de referência de +5 V). * Devolve a distância em centímetros ou -1 se esta não pode ser calculada. * **//unsigned short ultrasonic_measure_srf04(pin trigger, pin echo)//** \\ Mede a distância com o sensor ultrasónico SRF04. A função gera um pulso num pin e mede o tempo do pulso de eco noutro pin. A distância é calculada a partir da diferença de tempo. A função espera uma frequência de relógio de 14.7456 MHz. A medição pode demorar até 36 ms. Parâmetros: * //trigger// - Variável do pin de triggering. * //echo// - Variável do pin de eco. * Devolve a distância em centímetros ou 0 quando a medição falha. * **//unsigned short ultrasonic_measure_srf05(pin trigger_echo)//** \\ Mede a distância com o sensor ultrasónico SRF05 no regime de um fio. A função gera um pulso num pin e mede o tempo do pulso de eco no mesmo pin. A distância é calculada a partir da diferença de tempo. A função espera uma frequência de relógio de 14.7456 MHz. A medição pode demorar até 36 ms. Parâmetros: * //trigger_echo// - Variável combinada de pin Trigger/Eco. * Devolve a distância em centímetros ou 0 quando a medição falha. ===== Exemplo ===== O programa que se segue demonstra a utilização de sensores de distância IR e ultrasónico SRF05. #include // Ultrasonic distance sensor control pins. pin pin_triggerecho = PIN(G, 0); int main(void) { unsigned short adc_value = 400; // random ADC result. signed short distance; // Distance calculation from IR distance sensor ADC result. distance = ir_distance_calculate_cm(GP2Y0A21YK, adc_value); // Measuring with ultrasonic distance sensor. distance = ultrasonic_measure_srf05(pin_triggerecho); }