Go Down

Topic: Arduino + VB + Comunicação SerialPort + Dúvidas (Read 3483 times) previous topic - next topic

ruiacm10


Depende do shield... Mas é provável...
Qual era o modelo de shield que estavas a pensar usar? Tens a certeza que te queres meter nisso com o que sabes de C?


O shield é este http://arduino.cc/en/uploads/Main/ArduinoEthernetShield_R3_Front.jpg

Ya vai ser complicado mas era a minha ideia ..

Só queria criar um site simples para desligar e ligar via internet, penso que não é muito complicado (acho eu).
Não sei é até que ponto dá para estar a utilizar o programa em vb e ao mesmo tempo ligar e desligar via ethernet

bubulindo

Sim, com esse shield vais perder pinos com PWM.

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

ruiacm10

#17
Mar 27, 2013, 05:28 pm Last Edit: Mar 27, 2013, 05:30 pm by ruiacm10 Reason: 1

Sim, com esse shield vais perder pinos com PWM.




Ya, o pino 10 pelo menos.
Mas mesmo assim consigo dar a volta, basta tirar uma divisao, sem problema

bubulindo

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

ruiacm10


3... pelas minhas contas.


Tive a mudar o programa e ficou assim no arduino:
Code: [Select]

int PinoV = 11;
int PinoH= 10;
int PinoS=9;
int PinoC = 6;
int PinoJ= 5;
int PinoR=7; //Não é PWM
int PinoQ = 4;
int PinoB= 2; //Não é PWM

void setup(){
  pinMode(PinoV,OUTPUT);
  pinMode(PinoH,OUTPUT);
  pinMode(PinoS,OUTPUT);
  pinMode(PinoC,OUTPUT);
  pinMode(PinoJ,OUTPUT);
  pinMode(PinoR,OUTPUT);
  pinMode(PinoQ,OUTPUT);
  pinMode(PinoB,OUTPUT);
  Serial.begin(19200);
}
void loop (){
  char pwm[4];
  unsigned char pwm_int = 0;

if (Serial.available() >= 4) {
//ler PWM
  for (int i = 0; i < 3; i++){
    pwm[i] = Serial.read();
}
  pwm[3] = '\0';
  pwm_int = atoi(pwm);
  switch(Serial.read()) {
    case 'V': {
          analogWrite(PinoV, pwm_int);
          Serial.println(pwm_int);
          break;}
    case 'H': {
          analogWrite(PinoH, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'S': {
          analogWrite(PinoS, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'C': {
          analogWrite(PinoC, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'J': {
          analogWrite(PinoJ, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'R': {
          analogWrite(PinoR, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'Q': {
          analogWrite(PinoQ, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'B': {
          analogWrite(PinoB, pwm_int);
          Serial.println(pwm_int);
          break; }
   
    }
}
}



O PinoR e o PinoB não vão ter dimmer, vai ser só ligar e desligar.
Se meter mais uma divisao assim a ligar e desligar só, já dá.

bubulindo

O analogWrite não faz nada em pinos digitais...

Code: [Select]

if(pwm_int == 0) {
    digitalWrite(pino, LOW);
} else {
    digitalWrite(pino, HIGH);
}
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

ruiacm10


O analogWrite não faz nada em pinos digitais...

Code: [Select]

if(pwm_int == 0) {
    digitalWrite(pino, LOW);
} else {
    digitalWrite(pino, HIGH);
}



Tambem funcionava da outra maneira mas se assim está mais correto deixo da tua maneira ;)

ruiacm10


O analogWrite não faz nada em pinos digitais...


Como é que através do vb consigo saber o estado do LED? (Se está ligado, desligado ou a sua intensidade)

bubulindo

Envias um "comando" para o Arduino a questionar o estado do LED que pretendes... e o Arduino responde.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

ruiacm10


Envias um "comando" para o Arduino a questionar o estado do LED que pretendes... e o Arduino responde.



Pois não sei é como

bubulindo

Code: [Select]

#define QUARTO_B 0
#define QUARTO_J 1
...

unsigned char analog_values[6]; //imaginemos 6 quartos.

switch(Serial.read()) {
    case 'V': {
          analogWrite(PinoV, pwm_int);
          Serial.println(pwm_int);
          break;}
    case 'H': {
          analogWrite(PinoH, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'S': {
          analogWrite(PinoS, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'C': {
          analogWrite(PinoC, pwm_int);
          Serial.println(pwm_int);
          break; }
    case 'J': {
          analogWrite(PinoJ, pwm_int);
          analog_values[QUARTO_J] = pwm_int;
          Serial.println(pwm_int);
          break; }
    case 'R': {
          analogWrite(PinoR, pwm_int);
          analog_values[QUARTO_R] = pwm_int;
          Serial.println(pwm_int);
          break; }
    case 'Q': {
          analogWrite(PinoQ, pwm_int);
          analog_values[QUARTO_Q] = pwm_int;
          Serial.println(pwm_int);
          break; }
    case 'B': {
          analogWrite(PinoB, pwm_int);
          analog_values[QUARTO_B] = pwm_int;
          Serial.println(pwm_int);
          break; }

//OLHA AQUI...
   case 'b': {
     Serial.println(analog_values[QUARTO_B]);
     break;
    }
}


Se enviares 000b, recebes o PWM que tens no quarto B. Obviamente que isto não é ideal e é um sinal de quão imperfeito este protocolo é...
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

ruiacm10

#26
Apr 03, 2013, 02:34 pm Last Edit: Apr 03, 2013, 02:41 pm by ruiacm10 Reason: 1

...
Se enviares 000b, recebes o PWM que tens no quarto B. Obviamente que isto não é ideal e é um sinal de quão imperfeito este protocolo é...


Depois no vb é so fazer o serial.read e fazer parsing da string recebida certo?

bubulindo

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up