Arduino: Ersätta tecken i array för uppräkning
Hej!
Jag försöker göra ett enkelt test med att skicka data med en FS1000A krets. Denna biten fungerar ganska bra ser det ut som men...
Jag lyckas inte ersätta ett tecken i mitt meddelande med en uppräknare som går från 1-8 och börjar där efter om på 1.
/*
VirtualWire 1.15 modifyed by http:/567.dk to fit my setup
Com speed 115200
transmit_en_pin = 3;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!! Prints out ASCII !!!!!!!!!!!!
!!!!!!!!!!!! You screen will act on the codes !!!!!!!!!!!!
!!!!!!!!!!!! Advice DEBUG with reciver1_5_HEX !!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $
#include <VirtualWire.h>
const int led_pin = 13;
const int transmit_pin = 2;
const int receive_pin = 2;
const int transmit_en_pin = 3;
void setup()
{
delay(1000);
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
pinMode(led_pin, OUTPUT);
}
byte count = 1;
void loop()
{
// 0 1 2 3 4 5 6 7 8 9 10 11
char msg[12] = {'T','R','A','N','S','M','I','T',':','-','#','-'};
// replace chr 12 with count (#)
digitalWrite(led_pin, HIGH); // Flash a light to show transmitting
Serial.print("Sending, package: ");
Serial.print(count);
Serial.print(" - ");
Serial.print(msg);
Serial.print(" - ");
msg[10] = count;
Serial.println(msg);
vw_send((uint8_t *)msg, 12);
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(led_pin, LOW);
delay(1000);
count = count + 1;
if (count > 8) {
count = 1;
Serial.println(" ");
}
}
Utskriften på skärmen blir följande:
Sending, package: 8 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 1 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 2 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 3 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 4 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 5 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 6 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 7 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 8 - TRANSMIT:-#- - TRANSMIT:--
Sending, package: 1 - TRANSMIT:-#- - TRANSMIT:--
Det är alltså tänkt att # ska ersättas med en siffra 1-8.
På mottagarsidan finns följande:
/*
VirtualWire 1.15 modifyed by http:/567.dk to fit my setup
Com speed 115200
receive_pin = 3
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!! Prints out ASCII !!!!!!!!!!!!
!!!!!!!!!!!! You screen will act on the codes !!!!!!!!!!!!
!!!!!!!!!!!! Advice DEBUG with reciver1_5_HEX !!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
// receiver.pde
//
// Simple example of how to use VirtualWire to receive messages
// Implements a simplex (one-way) receiver with an Rx-B1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $
#include <VirtualWire.h>
const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 3;
const int transmit_en_pin = 5;
void setup()
{
delay(1000);
Serial.begin(9600); // Debugging only
Serial.println("setup");
// Initialise the IO and ISR
vw_set_tx_pin(transmit_pin);
vw_set_rx_pin(receive_pin);
vw_set_ptt_pin(transmit_en_pin);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver PLL running
pinMode(led_pin, OUTPUT);
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
int i;
digitalWrite(led_pin, HIGH); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("HEX : ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf[i], HEX);
Serial.print(' ');
}
Serial.println();
Serial.print("ASCII: ");
for (i = 0; i < buflen; i++)
{
Serial.print((char)buf[i]);
Serial.print(" ");
}
Serial.println();
Serial.println(" ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ");
digitalWrite(led_pin, LOW);
}
}
och det ger följande utskrift på skärmen:
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 8 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 1 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 2 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 3 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 4 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 5 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 6 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 7 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 8 2D
ASCII: T R A N S M I T : - -
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
HEX : 54 52 41 4E 53 4D 49 54 3A 2D 1 2D
ASCII: T R A N S M I T : - -
Jag har kollat på flera förslag / exempel och inser inte vad jag gör för fel?
Tacksam för lite hjälp på vägen.
Mvh
z
Edit 1:
Fixade glömd utskrift i spolier 2
Edit 2:
Lägger till mottagarkoden
C2D E6300 @ 3.2HGz 1.2V | Thermalright 120 Extr. | Gainward 8800 GT Golden Sample |Samsung 2x500Gb | Corsair VX 550V | Antec P182 [img]http://valid.x86-secret.com/cache/banner/421648.png[/img]