collapse

* Links de Robótica

* Posts Recentes

Ligar Células de Lithium por Hugu
[Hoje às 02:00]


Encomenda Colectiva N3-2016[@Mouser - Aberta a pedidos!] por Hugu
[Hoje às 01:53]


Printer 3D barata por xmatias
[Ontem às 03:56]


Servidor por almamater
[09 de Dezembro de 2016, 21:39]


mysql server error por andre_f_carvalho
[09 de Dezembro de 2016, 18:56]


Cortar plástico ABS por msr
[05 de Dezembro de 2016, 17:27]


MOVIDO: FPV Drone Racing? por metRo_
[05 de Dezembro de 2016, 10:49]


Módulo gsm por dio123
[04 de Dezembro de 2016, 23:06]


Procuro resistências 220 Ohm de 1% por brunus
[02 de Dezembro de 2016, 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[02 de Dezembro de 2016, 11:19]

Autor Tópico: Ligar e desligar led no arduino atravez do pc  (Lida 3260 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Ligar e desligar led no arduino atravez do pc
« 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
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline XicoMBD

  • Mini Robot
  • *
  • Mensagens: 571
    • FranciscoDias.net
Re: Ligar e desligar led no arduino atravez do pc
« Responder #1 em: 16 de Outubro de 2011, 19:01 »
Experimenta usar o processing: 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/

Offline engenhocas4you

  • Mini Robot
  • *
  • Mensagens: 91
Re: Ligar e desligar led no arduino atravez do pc
« Responder #2 em: 16 de Outubro de 2011, 21:54 »
Se quiseres utilizar o vb.net ou o IDE do arduino tens aqui um video.

http://engenhocas4you.wordpress.com/2011/09/20/337/

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #3 em: 18 de Outubro de 2011, 22:48 »
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?
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #4 em: 20 de Outubro de 2011, 18:39 »
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'

Código: [Seleccione]
char aux = Serial.read();

if(aux == 'a'){
  digitalWrite(13, HIGH);
}

queria fazer o mesmo para uma palavra em vez de caracter, do género:

Código: [Seleccione]
char aux = Serial.read();

if(aux == 'ligarLuz'){
  digitalWrite(13, HIGH);
}

Cumprimentos
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.990
  • Helpdesk do sitio
Re: Ligar e desligar led no arduino atravez do pc
« Responder #5 em: 20 de Outubro de 2011, 18:52 »
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:
Código: [Seleccione]
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.
Avr fanboy

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #6 em: 22 de Outubro de 2011, 01:27 »
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?
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com


Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #8 em: 22 de Outubro de 2011, 01:33 »
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...
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.990
  • Helpdesk do sitio
Re: Ligar e desligar led no arduino atravez do pc
« Responder #9 em: 22 de Outubro de 2011, 01:42 »
É 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.
Avr fanboy

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #10 em: 22 de Outubro de 2011, 01:43 »
eu utilizo o shiftOut e o shiftIn isso não pertence á biblioteca do SPI?
« Última modificação: 22 de Outubro de 2011, 02:00 por rochinha75 »
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.990
  • Helpdesk do sitio
Re: Ligar e desligar led no arduino atravez do pc
« Responder #11 em: 22 de Outubro de 2011, 01:55 »
Não, isso é bit-banged e pode ser usado em qualquer pino.
Avr fanboy

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #12 em: 25 de Outubro de 2011, 16:54 »
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:

Código: [Seleccione]
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


Código: [Seleccione]
#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...


Código: [Seleccione]
#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...


Código: [Seleccione]
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....
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com

Offline rochinha75

  • Mini Robot
  • *
  • Mensagens: 50
    • AutoElectronic
Re: Ligar e desligar led no arduino atravez do pc
« Responder #13 em: 27 de Outubro de 2011, 16:43 »

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...


Código: [Seleccione]
#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);

  }
Cumprimentos,
rochinha75

carlos_andre75@hotmail.com