collapse

* Posts Recentes

Caixa de música por Hugu
[Ontem às 20:26]


Esquema electrico de uma tv-box android? por Hugu
[Ontem às 20:13]


strobe lights por KammutierSpule
[25 de Outubro de 2019, 11:08]


Robot Extreme - Lisboa Games Week 2019 por guilhermexbot
[15 de Outubro de 2019, 15:21]


tecnologias web para servidor num MCU por jm_araujo
[09 de Outubro de 2019, 14:47]


Limitador de corrente simples por jm_araujo
[08 de Outubro de 2019, 10:29]


Assemblagem de PCBs - JLCPCB por jm_araujo
[06 de Outubro de 2019, 13:46]


"Arduino vs PIC" por jm_araujo
[06 de Outubro de 2019, 13:42]


UTC555D vs NE555N ? por jm_araujo
[03 de Outubro de 2019, 17:57]


Trituradora/Destruidora de cartão em tiras por m90mine
[01 de Outubro de 2019, 21:30]

Autor Tópico: separar valores de vários sensores  (Lida 6270 vezes)

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

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 643
    • Guibot
Re: separar valores de vários sensores
« Responder #15 em: 16 de Dezembro de 2008, 15:56 »
já agora.. sabem como se usam certas funções de C no arduino?   por exemplo:

sscanf
atoi
strchr

já tentei importar as livrarias mas não estou a conseguir

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.348
    • Tiago Rodrigues
Re: separar valores de vários sensores
« Responder #16 em: 16 de Dezembro de 2008, 16:09 »
Duvido que essas funções existam por requererem bastante espaço, iria gastar a memoria toda do arduino. Porque não fazes esse processamento no pc? tenta baixar o nível de complexidade, afinal é hardware ;)

Offline defer

  • Mini Robot
  • *
  • Mensagens: 57
Re: separar valores de vários sensores
« Responder #17 em: 16 de Dezembro de 2008, 16:16 »
o sscanf é um monstro de função, mas as outras podes re-implementar facilmente sem ter que usar as libs standard, algo do género:

Código: [Seleccione]
int my_atoi (char *s) {
  int result = 0;
  while (*s) {
    result = result * 10 + *s-'0';
    s++;
  }
  return result;
}


char *my_strchr (char *s, int chr) {
  while (*s) {
    if (*s == chr) return s;
    s++;
  }
  return NULL;
}

Atenção que a primeira não faz qualquer tipo de verificação se é mesmo um número e tambem nao funciona para números negativos, mas a adaptação não é difícil, era só um proof of concept

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 643
    • Guibot
Re: separar valores de vários sensores
« Responder #18 em: 16 de Dezembro de 2008, 19:20 »
vou ter que aprofundar, já tenho material para me entreter, obrigado defer  ;)

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 643
    • Guibot
Re:separar valores de vários sensores
« Responder #19 em: 19 de Dezembro de 2008, 00:43 »
depois de pesquisar como se processa a interpretação dos 'bytes' e como se convertem em 'ints', consegui chegar a uma resolução.

para já parece ser relativamente estável.
estou desejando chegar a casa e experimentar controlar os motores do farrusco remotamente   8)


Arduino que envia:
Código: [Seleccione]
int analogValue2, analogValue5;
int val2, val5;

void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(9600);
}

void loop()
{
  // read analog input
  analogValue2 = analogRead(5);
  analogValue5 = analogRead(2);

  val2 = map(analogValue2, 0, 1023, 253, 0); //254 e 255 para SYNC
  val5 = map(analogValue5, 0, 1023, 253, 0);

  Serial.print(254, BYTE); //SYNC char
  Serial.print(val2, BYTE);
  Serial.print(255, BYTE); //SYNC char
  Serial.print(val5, BYTE);

  // pause for 100 milliseconds:
  delay(100);      //
}

Arduino que recebe:
Código: [Seleccione]
#include <AFSoftSerial.h>
 AFSoftSerial mySerial =  AFSoftSerial(3, 2);

 byte incomingByte;
 byte sensor1, sensor2;

 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 void setup() {
  Serial.begin(9600);         // connect to the serial port
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");

 }

 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 void loop() {
   
   if (mySerial.available()) {
      incomingByte = mySerial.read();

      Serial.println(int(incomingByte));

      if ((int(incomingByte) == 254)) {
        sensor1 = mySerial.read();
        Serial.print("Sensor 1 = ");
        Serial.println(int(sensor1));       
      }

      if ((int(incomingByte) == 255)) {
        sensor2 = mySerial.read();
        Serial.print("Sensor 2 = ");
        Serial.println(int(sensor2));             
      }
   
   }

 }
« Última modificação: 19 de Dezembro de 2008, 00:46 por guibot »