Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- GerritPathuis
- Date:
- 2018-02-18
- Revision:
- 4:1249c317e7f3
- Parent:
- 3:19a244789b2b
- Child:
- 5:3b737b1cedf5
File content as of revision 4:1249c317e7f3:
#include "mbed.h"
#include "MODSERIAL.h"
#include <string>
#include <ctype.h>
// E45-TTL-100 RADIO------KL25Z
// AUX--------------------PTD4
// M1---------------------PTA12
// M0---------------------PTA4
// RXD--------------------PTE22(TX)
// TXD--------------------PTE23(RX)
// LORA Radio Transmits @ 868 mHz
// Expected range 2000m
// https://quadmeup.com/wp-content/uploads/2017/09/E45-TTL-100_Datasheet_EN_v1.2.pdf
Ticker timer;
MODSERIAL pc(USBTX, USBRX, 512); // tx, rx of the pc, (512 char buffer)
MODSERIAL e45(PTE22, PTE23, 512); // tx, rx of the E45 radio (512 char buffer)
InterruptIn aux(PTD4); // AUX the E45 radio
DigitalOut m1(PTA12,PullUp); // M1 the E45 radio
DigitalOut m0(PTA4, PullUp); // M0 the E45 radio
DigitalOut myled(LED_BLUE); // KL25x BLUE led
int ping=1; // this number bounces between radios and is incremented
void flank_up()
{
myled=1; //Rising Edge Detected
}
void flank_down()
{
myled=0; //Falling Edge Detected
}
void timer_func() // Send something every 3 seconds
{
if (myled == 1) { // AUX is high (Buffer empty), send something
wait_ms(3);
ping++; // Increase the value
e45.printf("%04d\n\r", ping);
while(myled==0) {
pc.puts("Wait for end Transmission\n\r");
wait_ms(1);
}
pc.printf("\n\rRadio has sent %04d\n\r", ping);
}
}
int main()
{
int count=0;
string incoming;
char c;
pc.baud(115200);
e45.baud(9600); // Default for E45
e45.format(8, SerialBase::None, 1); // Default for E45
pc.puts("\n\r\nE45-TTL-100 LORA\n\r");
aux.rise(&flank_up); //Service RISING EDGE Interrupt
aux.fall(&flank_down); //Service FALLING EDGE Interrupt
// select mode
// Transparant Transmission
if (myled ==1) { //Check ready or not
while(myled==0) { //Wait when not yet ready
count++;
if (count > 2000000) { //Kill time
count=0;
pc.puts("Wait for AUX Rising edge ");
}
}
}
wait_ms(2);
m0= 0; //Set transparant mode
m1= 0; //Set transparant mode
wait_ms(1);
pc.puts("E45 is now ready to send and receive \n\r");
timer.attach(&timer_func, 3.0);
while(1) {
if (ping>9999) ping=1;
if (myled == 0) { // AUX is low, Chars received
//incoming= ""; // Clear the string
while(myled==0) {
if (e45.readable()) {
c=e45.getc();
if (isdigit(c))
incoming += c;
//pc.putc(c); //send to pc
} else { // End transmission
if (incoming.length()==4) {
ping= atoi(incoming.c_str());
pc.printf("incoming value %4d \n\r", ping);
incoming= ""; // Clear the string
}
}
}
}
}
}