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.

quarta-feira, 17 de maio de 2023

Iniciando com o Raspberry Pi - Criando programas e acessando as portas do raspberry pelo Geany.

 Quando se instala o SO do raspberry já se tem o compilador gcc instalado e o Geany.

O próximo passo é intalar a "lib wiringPi".

Estando instalado esta lib e pode ser testado no terminal do linux via comando “gpio readall” , se aparecer a tabela com a pinagem do raspberry  está tudo ok.

Veja o vídeo abaixo para ver o programa funcionando e os passo para criar o arquivo:



O código fonte:

#include <wiringPi.h>

int main (void)

{

            wiringPiSetup () ;

            pinMode (29, OUTPUT) ;

            pinMode (28, OUTPUT) ;

            for (;;)

            {

                        digitalWrite (28, HIGH) ;

                        digitalWrite (29, HIGH) ;

                         delay (500) ;

                        digitalWrite (29, LOW) ;        

                         delay (500) ;

                        digitalWrite (28, LOW) ;

                        digitalWrite (29, HIGH) ;

                         delay (500) ;

                        digitalWrite (29, LOW) ;        

                         delay (1000) ;

            }

            return 0;

}

links que ajudam quem está começando :