LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: rochinha75 em 16 de Outubro de 2011, 18:41
-
Boa Tarde pessoal,
Depois de concluir o projecto do cubo de leds 3x3x3, gostava de saber como posso ligar e desligar um led ou por exemplo desligar e ligar o cubo de leds, utilizando por exemplo uma imagem no pc, ou um botão de uma página web, sei lá assim algo do género,
Já andei a googlar e não encontro nada do meu agrado e as explicações que encontro falta sempre alguma coisa...
Será que alguem me pode dar uma ajuda???
Cumprimentos
-
Experimenta usar o processing: http://processing.org/ (http://processing.org/)
Tens o exemplo SimpleWrite que é isso mesmo.
Depois também tens este exemplo, um pouco mais avançado: http://lab.guilhermemartins.net/2010/07/22/processing-to-arduino/ (http://lab.guilhermemartins.net/2010/07/22/processing-to-arduino/)
-
Se quiseres utilizar o vb.net ou o IDE do arduino tens aqui um video.
http://engenhocas4you.wordpress.com/2011/09/20/337/ (http://engenhocas4you.wordpress.com/2011/09/20/337/)
-
O que eu andava á procura era algo do genero que o engenhocas4you me disse...
Será que há alguma possíbilidade de conseguir fazer algo do género atraves do telemovel, ou alujar um site e conseguir aceder ao arduino através desse site?
Se sim como sonsigo colocar uma password no arduino para que ninguem do exterior consiga aceder ao mesmo?
-
Boa Tarde,
Estou com uma dúvida na programação do meu arduino...
Quero que ele receba atraves do monitor uma palavra por exemplo ligarLuz, e ativar uma saída.
Só estou a conseguir fazer com caracteres... por exemplo 'a'
char aux = Serial.read();
if(aux == 'a'){
digitalWrite(13, HIGH);
}
queria fazer o mesmo para uma palavra em vez de caracter, do género:
char aux = Serial.read();
if(aux == 'ligarLuz'){
digitalWrite(13, HIGH);
}
Cumprimentos
-
Primeiro, sempre que queres ler coisas do serial tens de ver se tens lá dados, para isso usas o Serial.available()>0, e se queres uma string tens de fazer algo tipo isto:
i=0;
if(Serial.available()>0){
string[i] = Serial.read();
i++;
}
Agora até onde vai o i++ só depende do tamanho da tua string, googla um bocado sobre o assunto, e no fim usas o strcmp e comparas com o que tu queres.
-
Como ligar o ci 74hc165 no arduino???
Isto para multiplexar entradas do arduino,
já consegui utilizar o 74hc595 para as saidas agora gostava de saber como usar o 74hc165 para in's de maneira a conseguir utilizar ambos.
O 74HC165 para entradas e o 74HC595 para saidas...
Isto é possível?
-
http://basementleds.blogspot.com/2008/06/shift-register-ins-and-outs.html (http://basementleds.blogspot.com/2008/06/shift-register-ins-and-outs.html)
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202874493 (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1202874493)
http://wardyprojects.blogspot.com/2011/05/74hc165-piso-shift-register-arduino.html (http://wardyprojects.blogspot.com/2011/05/74hc165-piso-shift-register-arduino.html)
-
Senso agradeço-te pela rápida resposta á minha pergunta...
Já tinha andado no google e aqui pelo aforum á procura de alguma coisa, e já tinha encontrado esses sites, contudo agradeço-te pela informação, só que eu tenho o 74hc595 ligado aos pinos 8, 11 e 12 do arduino.
Estes tutorias que me mandas-te manda ligar o 74hc195 aos mesmos pinos... mas eu pretende os dois para ter mais entradas e saidas ao mesmo tempo...
-
É só mudares para outros pinos que quiseres, isso não usa SPI por hardware para ter de ser forçosamente nesses pinos, podes usar os que quiseres, é só mudar no código e ligar de acordo.
-
eu utilizo o shiftOut e o shiftIn isso não pertence á biblioteca do SPI?
-
Não, isso é bit-banged e pode ser usado em qualquer pino.
-
Bem, já ando á dias a tentar fazer o código para conseguir utilizar o ci 74HC165,
Já fiz inumeros códigos diferentes e não consigo por isto a trabalhar.
Deixo aqui alguns códigos que tentei implementar, mas sem sucesso:
int latchPin = 8;
int dataPin = 9;
int clockPin = 7;
byte switchVar = 0;
void setup() {
Serial.begin(9600);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, INPUT);
}
void loop() {
digitalWrite(latchPin,0);
delayMicroseconds(20);
digitalWrite(latchPin,1);
switchVar = shiftIn(dataPin, clockPin, 8);
Serial.println("-");
Serial.println(switchVar);
delay(1000);
}
este código não consigo extrair completamente nada do CI
#define LatchPin 8
#define ClockPin 7
#define DataPin 9
void setup()
{
Serial.begin(9600);
pinMode(LatchPin, OUTPUT);
pinMode(ClockPin, OUTPUT);
pinMode(DataPin, INPUT);
}
int a = 0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;
void loop()
{
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
a = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
b = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
c = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
c = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
d = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
e = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
f = DataPin;
digitalWrite(ClockPin, 0);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 1);
g = DataPin;
digitalWrite(LatchPin, HIGH);
Serial.print(a);
Serial.print(b);
Serial.print(c);
Serial.print(d);
Serial.print(e);
Serial.print(f);
Serial.print(g);
Serial.println(h);
delay(1000);
}
Com este código obtenho sempre o numero 99999990, seja qual for o botão premido...
#define LatchPin 8
#define ClockPin 7
#define DataPin 9
void setup()
{
Serial.begin(9600);
pinMode(LatchPin, OUTPUT);
pinMode(ClockPin, OUTPUT);
pinMode(DataPin, INPUT);
}
int a = 0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;
void loop()
{
digitalWrite(ClockPin, 0);
a = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
b = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
c = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
d = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
e = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
f = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
g = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(ClockPin, 0);
h = DataPin;
digitalWrite(ClockPin, 1);
digitalWrite(DataPin, 0);
digitalWrite(LatchPin, HIGH);
Serial.print(a);
Serial.print(b);
Serial.print(c);
Serial.print(d);
Serial.print(e);
Serial.print(f);
Serial.print(g);
Serial.println(h);
delay(1000);
}
Com este código tenho sempre o numero 99999999, seja qual for o botão premido...
int data = 9;
int clock = 7;
int strobe = 8;
int value = 0;
void setup() {
pinMode(data, INPUT);
pinMode(clock, OUTPUT);
pinMode(strobe, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(strobe, LOW);
value = shiftIn(data, clock, LSBFIRST);
digitalWrite(strobe, HIGH);
Serial.println(value);
delay(1000);
}
Com este código todos os botões dão valor 0, mas com o botão que está ligado ao pino 4 do CI dá-me o valor de 255, mas os restantes botôes não me dá qualquer valor porque será???
Já não sei que mais eide fazer....
-
Ao fim de mais uns dias a olhar para o mesmo finalmente consegui detectar qual o meu erro...
estava a fazer "a = digitalWrite(dataPin);" em vez de "a = digitalRead(dataPin);"
Uma coisa tão simples e que me deu tanto que fazer... :)
Deixo aqui o código para quem precisar de ligar o CI 74HC165...
#define LatchPin 1
#define ClockPin 2
#define DataPin 9
void setup()
{
Serial.begin(9600);
pinMode(LatchPin, OUTPUT);
pinMode(ClockPin, OUTPUT);
pinMode(DataPin, INPUT);
}
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;
void loop()
{
digitalWrite(LatchPin, LOW);
digitalWrite(LatchPin, HIGH);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
h = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
g = digitalRead (DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
f = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
e = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
d = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
c = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
b = digitalRead(DataPin);
delay(20);
digitalWrite(ClockPin, LOW);
digitalWrite(ClockPin, HIGH);
a = digitalRead(DataPin);
delay(20);
digitalWrite(LatchPin, LOW);
Serial.print(a);
Serial.print(b);
Serial.print(c);
Serial.print(d);
Serial.print(e);
Serial.print(f);
Serial.print(g);
Serial.print(h);
}