collapse

* Posts Recentes

Ferro de Engomar :) por jm_araujo
[10 de Outubro de 2020, 20:43]


Problema Som Portátil por almamater
[08 de Outubro de 2020, 11:50]


Lupa para soldar por almamater
[01 de Outubro de 2020, 11:22]


comparação string por dio123
[24 de Setembro de 2020, 22:20]


Fullstack - El Corte Inglés por TigPT
[23 de Setembro de 2020, 21:40]


Broca diabólica por Alfredo Garcia
[23 de Setembro de 2020, 19:22]


Flipper Zero por TigPT
[23 de Setembro de 2020, 13:47]


JSN-SR04T - Distânica por Njay
[22 de Setembro de 2020, 04:38]


Frequêncímetro 1GHz por dropes
[19 de Setembro de 2020, 23:29]


DVD Laser Scanner Microscope por dropes
[19 de Setembro de 2020, 23:06]

Autor Tópico: separar valores de vários sensores  (Lida 7077 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.352
    • 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 »