Ir ao conteúdo

Posts recomendados

Postado

Bom gente peço a ajuda de vocês para entender como funciona ponteiros no arduino. Vou postar um código aqui e queria que me dissessem a respeito de algumas linhas dele se o meu raciocínio está correto ou não. na parte de declaração de variáveis foi declarado um ponteiro do tipo char que aponta para o endereço  no qual "123" está guardado certo?

assim o ponteiro irá referenciar o endereço e não o valor "123"?. E na parte de verificação da senha, se a primeira letra digitada do teclado for igual a primeira posição do endereço que o ponteiro está referenciando pula para aproxima posição e faz a verificação novamente. Bom foi isso que eu entendi, que puder me explicar direitinho agradeço.

 

#include <Keypad.h> 
#include <Servo.h> 
 
Servo servo_Motor; 
char* password = "123"; 
int position = 0; 
const byte ROWS = 4; 
const byte COLS = 4; 
char keys[ROWS][COLS] = { 
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = { 8, 7, 6, 9 }; 
byte colPins[COLS] = { 5, 4, 3, 2 }; 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
const int ledVermelho = 12; 
const int ledVerde = 13; 
 
void setup(){
  pinMode(ledVermelho, OUTPUT); 
  pinMode(ledVerde, OUTPUT); 
 
  servo_Motor.attach(11); 
  setLocked(true); 
}
 
void loop(){
  char key = keypad.getKey();
  if (key == '*' || key == '#') { 
      position = 0; 
      setLocked(true); 
}
if (key == password[position]){ 
      position ++;
}
if (position == 3){ 
      setLocked(false); 
}
delay(100);
}
void setLocked(int locked){ 
if (locked){ 
    digitalWrite(ledVermelho, HIGH);
    digitalWrite(ledVerde, LOW);
    servo_Motor.write(0); 
}
else{ 
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledVermelho, LOW);
    servo_Motor.write(82);
}
}

 

Postado

Olá de novo pessoa estressada e que não responde* as* perguntas* feitas* para resolver o caso uhauhauhahua... vamos lá:

5 horas atrás, Juliana Batista da Silva disse:

na parte de declaração de variáveis foi declarado um ponteiro do tipo char que aponta para o endereço  no qual "123" está guardado certo?

assim o ponteiro irá referenciar o endereço e não o valor "123"?

Certo. O ponteiro referencia o endereço de memória e não o valor, porém a partir de operadores dá para chamar o valor guardado nesses endereços.  < isso é mais teoria do que outra coisa e a gente quase não usa para fazer um código, só damos nomes para variável, chamamos e pronto... sem ficar viajando na maionese.

5 horas atrás, Juliana Batista da Silva disse:

E na parte de verificação da senha, se a primeira letra digitada do teclado for igual a primeira posição do endereço que o ponteiro está referenciando pula para aproxima posição e faz a verificação novamente. Bom foi isso que eu entendi, que puder me explicar direitinho agradeço.

Sim, é isso. Você só tem que chamar a atenção para password[position] que vai buscando como num vetor acada passagem.

 

 

Passar bem.

Postado
8 horas atrás, Bommu Perneta disse:

Olá de novo pessoa estressada e que não responde* as* perguntas* feitas* para resolver o caso uhauhauhahua... vamos lá:

Certo. O ponteiro referencia o endereço de memória e não o valor, porém a partir de operadores dá para chamar o valor guardado nesses endereços.  < isso é mais teoria do que outra coisa e a gente quase não usa para fazer um código, só damos nomes para variável, chamamos e pronto... sem ficar viajando na maionese.

Sim, é isso. Você só tem que chamar a atenção para password[position] que vai buscando como num vetor acada passagem.

 

 

Passar bem.

valeu por esclarecer minha dúvida... e referente ao tópico que não respondi tua pergunta desculpa ae tenho que entregar esse projeto  amanhã e tô mesmo "estressada", mas acho que resolvi o problema, o servo tava meio doido, não respondendo direito aos comandos, acho q era porque eu tava alimentando ele direto no arduino que tava sendo alimentado pela porta usb do pc e deve ter dado problemas por causa da corrente q o servo consome, então vou alimentar ele por uma fonte externa (4 pilhas alcalinas AA). Se puder me confirmar isso também ficarei mais grata ainda. 

Postado

Depende do datasheet dele e do que você está fazendo. Se o eixo está sem carga a maioria funcionar de boa no arduino com uma corrente de uns 200mA ou menos... agora se tiver carga alguns passar de 500mA e esse é o máximo de corrente fornecido pelo regulador do arduino smd, fora que esse regulador além de "nutrir" o motor também tem que dar corrente para o atmega dele e também outros componentes como leds e coisas do tipo que você coloca na placa.

 

Tem alguns exemplos na net de como você colocar pilha ou bateria junto com o arduino, mas basicamente você junta os gnds (coloca o negativo da bateria ou conjunto de baterias ao GND do arduino ) ,mas você não junta o 5V com o 5V ou seja lá qual for a tensão que você está fornecendo com as baterias.

 

Note que no desenho abaixo tem um modulo a mais, com ligações a mais só retirar ele do esquema ^^

 

Multiservocontrol_arduino_android_mitapp

 

 

 

adicionado 3 minutos depois

ah! você pode testar teus códigos no Proteus que simula tudo isso e sem problemas de energia.

Postado
3 minutos atrás, Bommu Perneta disse:

Depende do datasheet dele e do que você está fazendo. Se o eixo está sem carga a maioria funcionar de boa no arduino com uma corrente de uns 200mA ou menos... agora se tiver carga alguns passar de 500mA e esse é o máximo de corrente fornecido pelo regulador do arduino smd, fora que esse regulador além de "nutrir" o motor também tem que dar corrente para o atmega dele e também outros componentes como leds e coisas do tipo que você coloca na placa.

 

Tem alguns exemplos na net de como você colocar pilha ou bateria junto com o arduino, mas basicamente você junta os gnds (coloca o negativo da bateria ou conjunto de baterias ao GND do arduino ) ,mas você não junta o 5V com o 5V ou seja lá qual for a corrente que você está fornecendo com as baterias.

 

Note que no desenho abaixo tem um modulo a mais, com ligações a mais só retirar ele do esquema ^^

 

Multiservocontrol_arduino_android_mitapp

 

 

 

O servo que vou usar é um daqueles de antenas parabolicas, ele só vai puxar e empurrar uma tranca do tipo ferrolho feita de pvc

 

3.png.b45b5ce7851bf01e0d706eb87e869b63.png

 

creio que não vai chegar a 500mA o consumo de corrente, mas de qualquer forma vou utilizar a fonte externa mesmo seguindo esse modelo que você colocou ae. Mais uma vez obrigada por tirar mais uma dúvida minha.

Postado
5 minutos atrás, Juliana Batista da Silva disse:

O servo que vou usar é um daqueles de antenas parabolicas, ele só vai puxar e empurrar uma tranca do tipo ferrolho feita de pvc

Ai ele tá com bastante carga heim... Testa com a fonte externa e vê no que dá... se tiver problema volta aqui.

Postado
Em 19/09/2017 às 10:33, Bommu Perneta disse:

Ai ele tá com bastante carga heim... Testa com a fonte externa e vê no que dá... se tiver problema volta aqui.

Deu tudo certo aqui! consegui fazer funcionar direitinho. valeu ae pela ajuda. Fiz um jeito do servo girar a chave de uma fechadura dessas de portas convencionais. Se desse pra postar vídeo aqui eu mostraria o resultado funcionando.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!