TX-coder

TX sändaren med artikelnummer 3656 i testas.
Den är kopplad till i port 3 i testaren som är för sädare.
port 3 är 3.3 Volt, pinne 4 på nanoboard och GND.
Test modul 4353 är inte till salu, den använd för att testa TX/RX moduler.
main.cpp
#include <Arduino.h>
#define TX_PIN 4
// ========= TIMING =========
#define T 330 // vanliga alternativ är 300, 330, 500
#define SYNC_TIME (32 * T)
#define REPEAT 3 // minimum 3, 8 is recommended for better reliability
#define VERSION "RF_Transmitter V1.0"
// ========= ADDRESS =========
// 8 adressbitar
// F = floating, inte HEX: F
//
// om du sänder med en fjärrkontroll som har lödbyglar för att ställa in adressen
// 0 = LOW
// 1 = HIGH
// F =floating (ej byglad)
// String address = "01FFFFFF"; //Lödbyglad 1 till LOW och 2 till HIGH
String address = "FFFFFFFF"; //Utan lödbyglar alla floating flytande
// ========= COMMAND DATA =========
//
// A = 0010
// B = 1000
// C = 0001
// D = 0100
//
String commandBits = "0010";
// ================= LOW LEVEL =================
void sendHigh(int t) {
digitalWrite(TX_PIN, HIGH);
delayMicroseconds(t * T);
}
void sendLow(int t) {
digitalWrite(TX_PIN, LOW);
delayMicroseconds(t * T);
}
// ================= PT2260 BIT =================
//
// 0 = kort/kort
// 1 = lång/lång
// F = kort/lång
//
void sendBit(char c) {
switch (c) {
// Summan av en HIGH och LOW ska alltid vara 4T,
//så att varje bit tar lika lång tid
case '0':
sendHigh(1); //kort
sendLow(3);
sendHigh(1); //kort
sendLow(3);
break;
case '1':
sendHigh(3); //lång
sendLow(1);
sendHigh(3); //lång
sendLow(1);
break;
case 'F':
sendHigh(1); //kort
sendLow(3);
sendHigh(3); //lång
sendLow(1);
break;
}
}
// ================= SEND FRAME =================
void sendFrame(String fullFrame) {
for (int i = 0; i < fullFrame.length(); i++) {
sendBit(fullFrame[i]);
}
// sync
digitalWrite(TX_PIN, HIGH);
delayMicroseconds(T);
digitalWrite(TX_PIN, LOW);
delayMicroseconds(SYNC_TIME);
}
// ================= SEND COMMAND =================
void sendCommand(char cmd) {
if (cmd == 'A') {
commandBits = "0010";
}
else if (cmd == 'B') {
commandBits = "1000";
}
else if (cmd == 'C') {
commandBits = "0001";
}
else if (cmd == '0') {
// "0" means no button pressed, denna nollar alla utgångar
commandBits = "0000";
}
else if (cmd == 'D') {
commandBits = "0100";
}
else if (cmd == '2') {
commandBits = "0110"; // "2" means 2 knappar samtidigt, i det här fallet A och D
}
else {
Serial.println("Unknown command");
return;
}
String fullFrame = address + commandBits;
Serial.print("Sending: ");
Serial.println(fullFrame);
for (int i = 0; i < REPEAT; i++) {
sendFrame(fullFrame);
}
}
// ================= SETUP =================
void setup() {
pinMode(TX_PIN, OUTPUT);
digitalWrite(TX_PIN, LOW);
Serial.begin(115200);
Serial.println(VERSION);
Serial.println("PT2260 Serial TX");
Serial.println("Commands: A B C D 0 2");
}
// ================= LOOP =================
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
cmd = toupper(cmd);
sendCommand(cmd);
}
}
Denna sida är skapad med hjälp av AI.
En sida för dig som bygger elektronik själv, experimenterar och laborerar.
Skapad av Per-Anders Hult för PchButik.se.


