PchButik.se

TX-coder

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.