collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

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

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

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • 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.372
    • 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: 651
    • 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: 651
    • 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 »