LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: Rafael Lopes em 12 de Maio de 2011, 16:00
-
Boas a todos, antes de mais quero dizer que ainda sou muito novo nisto, tenho o meu primeiro KIT ARDUINO a pouco mais de uma semana, e ainda percebo MUITO pouco mesmo. O projecto que queria fazer era simples, tenho 2 LDR's e 2 LED's, e neste exemplo que está a seguir o projecto é quando a LDR2 tem uma valor maior que a LDR1, liga LED1 e quando os valores entre as LDR's são iguais, liga LED2. Isto era o que era suposto fazer mas depois de fazer o upload para a placa o que ela me faz é simplesmente liga os LED's e mais nada, ficando sempre ligados. Se alguem me puder ajudar, é que não estou a ver o que esteja mal :S (não percebo quase nada).
Será que tem a ver com o não por tempo para ficarem ligados?
Este foi o codigo que fiz:
#define LED1 9
#define LED2 5
int LDR1 = 0;
int LDR2 = 1;
int LDRval1 = 0;
int LDRval2 = 0;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop(){
LDRval1 = analogRead(LDR1);
LDRval2 = analogRead(LDR2);
if (LDRval2 > LDRval1); {
digitalWrite(LED1, HIGH);
} if (LDRval1 == LDRval2 ); {
digitalWrite(LED2, HIGH);
}
}
-
os LDR estão bem montados? consegues ler algum valor?
em relação ao código:
antes das {} nunca se usa ;
no loop a certa altura vais ter de apagar os leds, como está, mesmo que a instrução deixe de ser verdadeira o led vai continuar ligado
-
O problema é o ; depois do if, assim acabas logo o if o que está dentro dos {} não é executado.
-
Uiiii traz-me muitas memórias bugs deste tipo, os nervos que não é quando tudo parece estar direitinho mas não faz o que devia :D
E a fúria quando descobrimos a causa hehehe
E quando é problemas de formatação ao copiar de pdfs e tal!!! quando comecei com C do pdf for dummies e não dava o código copiado de lá hehe, não é fácil lidar :D
É muito importante saber fazer debug ao código, e deixem-me frisar, MUITO! Neste caso do arduino saber fazer os prints pa série nos sítios certos pode poupar muitas dores de cabeça ;)
Desculpem-me o spam, mas saiu-me por assim dizer :)
Já agora, assegura-te também que as LDR são iguais senão monta o hardware/software de forma a compensar.
-
Desde já agradeço a resposta aos 3...entao é o seguinte, ja alterei isso de usar {} antes de ; , e acrescentei delay(1000) mas o primeiro if e delay (2000) para o segundo if para desligar os led's como disse o nosso amigo CBX ("no loop a certa altura vais ter de apagar os leds, como está, mesmo que a instrução deixe de ser verdadeira o led vai continuar ligado"), mas continua igual ficam os dois ligados e mais nada :S
quanto a estarem bem ligadas as LDR's eu penso que sim (quase certeza que sim) entao, cada uma ligada a 5V numa extremidade a outra ligada ao GND com uma resistencia e ao analog pin correspondente de cada.
-
para apagar o led precisas de:
digitalWrite(LED1, LOW);
o delay apensa vai fazer o programa "parar" durante determinado tempo...
-
ihhhhhhh pois é :S
sorry.
-
ja consegui avanços... ;D eheheh
a pouco numa das respostas dadas perguntaram se leio algum valor...isso ve-se em "serial monitor" certo? mas como?
quais sao os valores que o analogRead dá ? entre 0 e 1023?
Tyran é mesmo isso, e mesmo inervante nao conceguir fazer as coisas correr como deviam correr...mas tudo se aprede...e com ajuda já vi que se torna muito mais facil aprender :), e se a coisa que gosto é aprender :D
-
a pouco numa das respostas dadas perguntaram se leio algum valor...isso ve-se em "serial monitor" certo? mas como?
quais sao os valores que o analogRead dá ? entre 0 e 1023?
sim e sim: http://www.arduino.cc/en/Reference/AnalogRead (http://www.arduino.cc/en/Reference/AnalogRead)
tens um exemplo ao fundo da página
-
Então força nisso ;)
Segue esse link do CBX, sempre que tiveres dúvida no retorna ou mesmo o que faz determinada função, nada melhor que ler a documentação e qualquer dúvida está cá a comunidade :)
-
Boa tarde mais uma pequena pergunta. Qual a forma mais facil de fazer uma ponte H para um motor DC?
Desde ja agradeço resposta, e muito obrigado.
-
comprar, não fica caro... ;D
ou podes pegar nuns transístores NPN e PNP e nuns didodos, à muitos esquemas por ai...
-
Por exemplo pode ser esta " SN754410 H-BRIDGE " ?
para fazer as ligaçoes depois é so procurar um daqueles esquemas que diga o que é cada pino e fazer a ligaçao certo?
e é facil de fazer de programar com o arduino? qual é o codigo?
desculpem se peço de mais mas estou mesmo intusiasmado com isto :P
-
SN754410, L293D, L298...
sim é só ligar os fios...
o código são apenas digitalwrite HIGH e LOW para ligar e desligar
-
comprar, não fica caro... ;D
ou podes pegar nuns transístores NPN e PNP e nuns didodos, à muitos esquemas por ai...
Quando se trabalha com corrente continua, basta so 4 transistores, certo? (ponte H mesmo básica)
-
E resistências, e saber o que se está a fazer, por 2 ou 3€ acho que vale mais comprar uma ponte H pronta a usar.
-
Boa noite a todos.
Gostava de saber uma infomação...trabalhando com LDR's/sensores no arduino e possível dizer que determinado valor de LDR é maior, menor, maior ou igual, menor ou igual, igual e nao igual, mas se eu precisar de dizer entre valores, por exemplo:
se LDR1 tiver entre 400 e 600 fazer qualquer coisa.
Isto é possivel? Se sim como?
Desde já muito obrigado
-
if(LDR1>400 & LDR1<600){
fazer qualquer coisa; }
-
hum oki...muito obrigado senso
-
Boas...ouvi uns rumores de pessoas que nao gostavm muito do serviço da lusorobotica por causa de encomendas...alguem me sabe dizer se se passa alguma coisa? é seguro comprar material?
-
Boas...ouvi uns rumores de pessoas que nao gostavm muito do serviço da lusorobotica por causa de encomendas...alguem me sabe dizer se se passa alguma coisa? é seguro comprar material?
pelo que sei o tigpt (admin) anda desaparecido e como consequência existe pessoal que comprou na loja, pagou e ainda não recebeu o material
-
Boas, precisava de ajuda
A bridge SN754410 da para ligar so dois motores ou mais?
Outra coisa como faço a ligaçao da ponte ao arduino para controlar um simples motor? e que ja pesquisei por esquemas dessa mesma ponte e nao percebo nada :
Precisa mesmo de energia suplementar como vejo em todos os esquemas ou nao e necessário?
-
Off topic; deves criar um tópico novo ou, melhor ainda, usar um dos muitos tópicos que já há por aqui sobre pontes H e L293D / SN754410 (SN754410 = L293).
-
@Rafael Lopes
Para o post original suponho que pretendes algo deste género:
int esq = 8; // 1º Led
int dir = 9; // 2º Led
int ldr_e = A0; //LDR na porta Analog 1
int ldr_d = A1; //LDR na porta Analog 2
int valor_d=0; //Valor da 1ª LDR
int valor_e=0; //Valor da 2ª LDR
void setup()
{
pinMode(dir, OUTPUT);
pinMode(esq, OUTPUT);
digitalWrite(esq,LOW); // 1º Led começa apagado
digitalWrite(dir,LOW); // 2º Led começa apagado
}
void loop()
{
valor_e=analogRead(ldr_e);
valor_d=analogRead(ldr_d);
Serial.print("Valor E = ");
Serial.println(valor_e);
Serial.print("Valor D = ");
Serial.println(valor_d);
Serial.println("");
if (valor_e>valor_d) {
digitalWrite(esq,HIGH);
digitalWrite(dir,LOW);
}
if (valor_d>valor_e) {
digitalWrite(dir,HIGH);
digitalWrite(esq,LOW);
}
if (valor_e==valor_d) {
digitalWrite(esq,HIGH);
digitalWrite(dir,HIGH);
}
delay(1000);*/
}