sexta-feira, 19 de maio de 2023

Será que posso usar todos os pinos de IO do raspberry como entrada e saida?

Olá tudo bem!

        Não tem coisa pior que fazer uma placa e descobrir que aquele pino de IO não funciona como esperado e então ter que recorrer a outro pino para fazer funcionar nossa aplicação, visando saber quais pinos realmente podem ser usado como entrada ou saída fiz o código fonte que esta no final do post.

        Neste código para testar os pinos são acionados todos os pinos por um tempo de modo sequencial, para o modo entrada é mostrado no terminal do compilador Geany(padrão do rasp) o estado atual de cada pino. o resultado é colocado na figura a seguir, onde as células em amarelo exigem atenção:

        É preciso ter em mente que no raspberry PI4 (versão que usei) cada pino pode ter ate 6 função, então devemos estar atentos as suas funções secundarias.

Vídeo demonstrando o funcionamento do algoritmo:



O código fonte :
 

#include <stdio.h>
#include <wiringPi.h>

int aux=0;

void teste_de_saida(void)
{
	while(aux<30)
            {
				pinMode (aux, OUTPUT) ;
				aux++;
			}
			aux = 0;
				while(aux<31)
				{//limpa tudo
                    digitalWrite (aux, LOW) ; 
					aux++;
				}				
            for (;;)
            {
				aux = 0;
				while(aux<31)
				{
					digitalWrite (aux, HIGH) ;
                    delay (100);
                    digitalWrite (aux, LOW) ; 
                    delay (100);
					aux++;
				}								 
				
            }
}
void teste_entradas(void)
{
	while(aux<31)
            {
				pinMode (aux,INPUT) ; // como entrada
				pullUpDnControl(aux,PUD_OFF); //hailita pullups (PUD_OFF/PUD_DOWN/PUD_UP)
				aux++;
			}			
            for (;;)
            {
				aux = 0;
				//printf("estado dos pinos 0 1 2 3...29 : \n\r");
				while(aux<31)
				{					
					if(digitalRead(aux) == 0)
					{
						//printf("%d-0 ",aux);
						printf("0");
					}
					else
					{
						printf("1");
					}
                    delay (00);
					aux++;
				}
				printf(" \n\r");
				
            }
}

int main (void)
{
             wiringPiSetup () ;                        
            /////////////////// para testar saidas/////////            
            //teste_de_saida();  
            /////////////////// para testar entradas /////////
            teste_entradas();
            return 0;

}

formatado em http://hilite.me/  acessado em 19_05_2023.

Nenhum comentário :

Postar um comentário

olá,digite aqui seu comentário!