Escultura Kryptos na CIA
Josicláudio
sábado, 25 de outubro de 2025
terça-feira, 3 de outubro de 2023
Projetos elaborados, ferrovia
Data: 03/10/2023
Registro internet, realização dos projetos com sucesso!
-Monitoramento de circuitos de via, com acesso ao log via navegador.
-Monitoramento de correntes de MCH, com acesso ao log via navegador. com alarmes e display OLED 2,42
-Receptor portátil e decodificador dos códigos ATC, com display 1'' e também com display 2,42''
-Decodificador de códigos CBTC com display oled 2,42"
-Monitoramento dos circuitos Serra Cremalheira, via zigbee e LORA. 2012 já com prévia.
-Projeto do single car para testes de freio em vagões, com display oled 2.42", base para mais elaborado.
- Captador de material particulado de exaustores, locomotivas e geradores.
- Relé CTP eletrônico.
- Localizador de cabos, via vlf.
- Sensor de movimentação de MCH, com aquisição óptica de escalas x/y, temperatura e posicionamento de MCH, sem escala graduada. 1200dpi, comunicação com o concentrador via rs485....
sexta-feira, 24 de fevereiro de 2023
Controle WEB Mini System Sony
Controle de Mini System Sony pela internet
Controle seus aparelhos de som da Sony pelo celular
Faça por conta e risco...
Pesquisei sobre o protocolo SIRC da Sony, daí clonei um controle pela entrada do microfone no pc com o programa Audacity (Melhor que osciloscópio)...
Neste caso, Start 0000 1100 1011 1001 1100 em HEX: CB9C comando: - <<
Foi utilizado a IDE do arduino, para programar um ESP32, na GPIO 26 utilizar um led IR com resistor de 120 ohms para proteção da saída, utiliza metade da corrente do led, pois o pino está limitado à 12mA e não 20mA que o led precisa, distância funcional sem drive 50 cm.
Programa completo:
// Base do protocolo Sony consultada em https://www.sbprojects.net/knowledge/ir/sirc.php
/*
Aparelho testado HCD-SH2000 100% funcional, extra o comando Eject
100% Compatível com os modelos de controle:
- RM-AMU006 / RM-AMU053 / RM-SC3 / RM-SCU37B
Aparelhos compatíveis: Não testados :)
MHC-GTR6 / CMT-LX10R
CMT-FX200 / FST-SH2000
MHC-EC590 / / MHC-GTZ3
GTR33 / GTR888
MHC-EC599 / MHC-ESX6
MHC-ESX8 / MHC-ESX9
MHC-EX66 /MHC-EX88
MHC-EX99 / GTR555
HCD-ZUX9 / FST-ZUX9
HCD-GTX66 / MHC-GTX66
HCD-GTX77 / MHC-GTX77
HCD-GTX88 / MHC-GTX88
HCD-GTX787 / MHC-GTX787
HCD-GTX888 / MHC-GTX888
HCD-EX6 / MHC-EX6
HCD-EX8 / MHC-EX8
HCD-EC68 / MHC-EC68
HCD-GT22 / MHC-GT22
HCD-GT44 / MHC-GT44
HCD-GT111 / MHC-GT111
HCD-GT222 / MHC-GT222
HCD-GT444 / MHC-GT444
HCD-GT555 / MHC-GT555
HCD-EX660 / MCH-EX660
HCD-EX880 / MHC-EX880
*/
#include <WiFi.h>
unsigned long previousMillis = 0;
unsigned long interval = 30000;
#define D1 26
#define CONNECT_TIME 10000
#define TIMEOUTTIME 5000
const char* ssid = "Sua rede aqui";
const char* password = "Senha da rede aqui";
WiFiServer server(80);
size_t currentTime = millis();
size_t previousTime = 0;
String header;
void setup() {
pinMode(D1, OUTPUT);
WiFi.begin(ssid, password);
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
currentTime = millis();
previousTime = currentTime;
String currentLine = "";
unsigned long currentMillis = millis();
if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) {
WiFi.disconnect();
//WiFi.reconnect();
previousMillis = currentMillis;}
while (client.connected() && currentTime - previousTime <= TIMEOUTTIME) {currentTime = millis();
if (client.available()) {char c = client.read();header += c;
if (c == '\n') {if (currentLine.length() == 0) {
client.println("<br />");
client.println("<h1 style=\"text-align:center; \" class=\"display-4\"><font color='Gold'><i><u>Controle Mini System Sony</u></i></h1> ");
if (header.indexOf("GET /D1/on") >= 0) { // power ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: POWER</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();um();zero();um();zero();zero();zero();zero();zero();zero();um();delay(45);}} //code 0xA81 POWER ON/OFF 101010000001
else if (header.indexOf("GET /D2/on") >= 0) { //sleep ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: SLEEP</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();zero();zero();zero();um();um();zero();zero();zero();zero();um();delay(45);}} //code 0x061 Sleep 0000 0110 0001
else if (header.indexOf("GET /D3/on") >= 0) { // display ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: DISPLAY</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();zero();um();zero();zero();um();zero();zero();zero();zero();um();delay(45);}} //END code 0xD21 Display 110100100001
else if (header.indexOf("GET /D4/on") >= 0) { // vol + ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: VOL +</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();zero();zero();um();zero();zero();zero();zero();zero();zero();um();delay(45);}} //code 0x481 VOL + 010010000001
else if (header.indexOf("GET /D5/on") >= 0) { // vol - ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: VOL -</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();zero();zero();um();zero();zero();zero();zero();zero();zero();um();delay(45);}} //code 0xC81 Vol - 110010000001
else if (header.indexOf("GET /D6/on") >= 0) { // play ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PLAY</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();zero();zero();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x4CB9C 01001100101110011100
else if (header.indexOf("GET /D7/on") >= 0) { // stop ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: STOP</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();zero();um();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x1CB9C 0001 1100 1011 1001 1100
else if (header.indexOf("GET /D8/on") >= 0) { //set clock ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: SELECT (clock)</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();zero();zero();zero();um();um();zero();zero();zero();zero();um();delay(45);}} //code 0x461
else if (header.indexOf("GET /D13/on") >= 0) { //tunner / band ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: TUNER/BAND</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();um();um();zero();zero();zero();zero();zero();zero();zero();um();delay(45);}} //code 0xF01 111100000001
else if (header.indexOf("GET /D10/on") >= 0) { //pause ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State:PAUSE</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();zero();um();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x9CB9C 1001 1100 1011 1001 1100
else if (header.indexOf("GET /D11/on") >= 0) { //cd ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: CD</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();um();zero();zero();um();zero();zero();zero();zero();zero();um();delay(45);}} //code 0xA41 1010 0100 0001
else if (header.indexOf("GET /D12/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: USB</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();zero();um();um();zero();zero();zero();zero();zero();zero();um();zero();zero();um();delay(45);}} //code 0x2C09 010 1100 0000 1001
else if (header.indexOf("GET /D9/on") >= 0) { // eq ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='RED'>State: EQ</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();zero();zero();zero();um();um();zero();zero();zero();zero();um();zero();zero();um();delay(45);}} //code 0x6309 110 0011 0000 1001
else if (header.indexOf("GET /D14/on") >= 0) { //function ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: FUNCTION</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();zero();um();zero();um();um();zero();zero();zero();zero();um();zero();zero();um();delay(45);}} //code 0x4B09 100 1011 0000 1001
else if (header.indexOf("GET /D15/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: - << </MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();zero();zero();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0xCB9C 00001100 1011 1001 1100
else if (header.indexOf("GET /D16/on") >= 0) { // + >> ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: + >> </MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();zero();zero();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x8CB9C 1000 1100 1011 1001 1100
else if (header.indexOf("GET /D17/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: ENTER</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();um();um();um();um();um();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x3EB9C 0011 1110 1011 1001 1100
else if (header.indexOf("GET /D18/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: SET (clock)</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();um();zero();zero();um();um();zero();zero();zero();zero();um();delay(45);}} //code 0xA61 101001100001
else if (header.indexOf("GET /D19/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: << </MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();zero();zero();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0xCCB9C 1100 1100 1011 1001 1100
else if (header.indexOf("GET /D20/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: >> </MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();um();zero();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x2CB9C 0010 1100 1011 1001 1100
else if (header.indexOf("GET /D21/on") >= 0) { // eject ok
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: EJECT</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();um();um();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x3CB9C 0011 1100 1011 1001 1100
else if (header.indexOf("GET /D22/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: REPEAT / FM mode</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();zero();um();um();zero();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0xB4B9C 1011 0100 1011 1001 1100
else if (header.indexOf("GET /D23/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: Tuner Memory</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();um();um();zero();zero();zero();zero();zero();zero();zero();um();delay(45);}} //code 0x701 0111 0000 0001
else if (header.indexOf("GET /D24/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: Play M / Tuner M</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();zero();zero();um();zero();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x14B9C 0001 0100 1011 1001 1100
else if (header.indexOf("GET /D25/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: CLEAR</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();um();um();zero();zero();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0xF0B9C 1111 0000 1011 1001 1100
else if (header.indexOf("GET /D26/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: Disc Skip / USB Select</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();um();um();um();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x7CB9C 0111 1100 1011 1001 1100
else if (header.indexOf("GET /D27/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: Folder -</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();zero();um();um();um();zero();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0x74B9C 0111 0100 1011 1001 1100
else if (header.indexOf("GET /D28/on") >= 0) { //
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: Folder +</MARQUEE></2></i>");
for (int i = 0; i < 3; i++){start();um();um();um();um();zero();um();zero();zero();um();zero();um();um();um();zero();zero();um();um();um();zero();zero();delay(45);}} //code 0xF4B9C 1111 0100 1011 1001 1100
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width(); initial-scale=1\">");
client.println("<meta charset=\"UTF-8\">");
client.println("<title>Controle Mini System Sony</title>");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style> { font-family: Helvetica; display: inline-block; margin: 3px auto; text-align: center;}");
client.println(".mybtn { background-color: #4CAF50; border: 3px solid #4CAF50;border-radius:50px;; color: white; padding: 10px 15px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; }");
client.println(".par { font-size: 16px;}");
client.println("p {text-align: center;}");
client.println("</style></head>");
client.println("<body style=background-color:#000000>");
client.println("<body class=\"bg-light\">");
client.println("<center><table>");
client.println("<td><p><a href=\"/D13/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">TUNER/BAND</a></p></td>");
client.println("<td><p><a href=\"/D14/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">FUNCTION</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D1/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:#f8f9fa!important;\" >POWER</a></p></td>");
client.println("<td><p><a href=\"/D2/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SLEEP</a></p></td>");
client.println("<td><p><a href=\"/D3/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">DISPLAY</a></p></td>");
client.println("<td><p><a href=\"/D4/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">VOL +</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D5/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">VOL -</a></p></td>");
client.println("<td><p><a href=\"/D6/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PLAY</a></p></td>");
client.println("<td><p><a href=\"/D7/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">STOP</a></p></td>");
client.println("<td><p><a href=\"/D8/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SELECT (clock)</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D9/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">EQ</a></p></td>");
client.println("<td><p><a href=\"/D10/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PAUSE</a></p></td>");
client.println("<td><p><a href=\"/D11/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">CD</a></p></td>");
client.println("<td><p><a href=\"/D12/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">USB</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D15/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> - << </a></p></td>");
client.println("<td><p><a href=\"/D16/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> + >> </a></p></td>");
client.println("<td><p><a href=\"/D17/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">ENTER</a></p></td>");
client.println("<td><p><a href=\"/D18/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SET (clock)</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D19/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> << </a></p></td>");
client.println("<td><p><a href=\"/D20/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> >> </a></p></td>");
client.println("<td><p><a href=\"/D21/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">EJECT</a></p></td>");
client.println("<td><p><a href=\"/D22/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">REPEAT / FM mode</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D23/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> Tuner Memory </a></p></td>");
client.println("<td><p><a href=\"/D24/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> Play Mode / tuner Mode</a></p></td>");
client.println("<td><p><a href=\"/D25/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">CLEAR</a></p></td>");
client.println("<td><p><a href=\"/D26/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">Disc skip / USB select</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D27/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">Folder -</a></p></td>");
client.println("<td><p><a href=\"/D28/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">Folder +</a></p></td>");
client.println("</tr>");
client.println("</div>");
client.println("</body></html></div></form></table></center>");
client.println();
break;} else {
currentLine = "";}}
else if (c != '\r') {
currentLine += c;}}}
header = "";
client.stop();}
delay(1);}
// Aqui controle dos bits 1, 0 e start gerando a portadora em 40KHZ
void um(){
for (int i = 0; i < 47; i++){ //48 |--|_ 48x25=1200/600
digitalWrite(D1, HIGH);
delayMicroseconds(12.5);// 12.5uS
digitalWrite(D1, LOW);
delayMicroseconds(12.5);} //12.5uS}
//digitalWrite(D1, LOW);
delayMicroseconds(600); }//600uS}}
void zero(){
for (int i = 0; i < 23; i++){ //24 |-|_ 24x25=600/600
digitalWrite(D1, HIGH);
delayMicroseconds(12.5); //12.5uS
digitalWrite(D1, LOW);
delayMicroseconds(12.5);} //12.5uS}
// digitalWrite(D1, LOW);
delayMicroseconds(600);} //600uS}}
void start(){
for (int i = 0; i < 95; i++){ //96 |----|_ 96x25=2400/600
digitalWrite(D1, HIGH);
delayMicroseconds(12.5); //12.5uS
digitalWrite(D1, LOW);
delayMicroseconds(12.5);} //12.5uS}
delayMicroseconds(600);} //600uS}}
domingo, 7 de agosto de 2022
JVC Compulink, COMPU LINK, JVC, Tape Deck, Arduino, DCS Codes
Protocolo JVC COMPU LINK e Arduino
Quem tem um Tape Deck antigo com entrada COMPU LINK - 3, e não tem o amplificador com controle remoto, o mesmo pode ser controlado por outros equipamentos via cabo. Muitas vezes, obrigando à quem não tem os módulos restantes, pouco utilizarem o Tape Deck.
Ao procurar no GOOGLE, descobri, que existe um protocolo para envio de comandos via cabo, neste Site https://github.com/jcj83429/jvc_compulink .
Conectando um Osciloscópio no terminal COMPU LINK e na terra do equipamento, ao pressionar play, observei parte do código que o equipamento enviou, provavelmente para ligar o resto do conjunto e pedir prioridade de execução.
Trecho do código enviado pelo Tape Deck
Agora como testar os Códigos DCS do manual:
- Realizar a conversão de Hex para Bin na calculadora do Windows.
- Realizar alguns comandos (digitalWrite) no pino 13 do Arduino.
//Comandos em teste do Deck JVC W218, inicia pelo deck b
//Josicáudio J. Lima
//Base do protocolo https://github.com/jcj83429/jvc_compulink
#define saida 13
void setup() {pinMode(saida, OUTPUT);}
//códigos sem sucesso 26, 28, 30, 2B, 44, C0, C1, C2
//códigos utilizados hex funcionais 20, 22, 23, 24, 25, 27, 29
void loop() {
rec();delay(5000);
pauses();delay(5000);
ff();delay(5000);
stope();delay(5000);
play();delay(5000);
pauses();delay(5000);
rew();delay(5000);
stope();delay(5000);
tlado();delay(5000);
/*
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
*/
}
void pauses(){//00100101 = 0x25
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void play() {//00100000 = 0x20
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void rec(){//00101001 0x29
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void tlado(){// 00100111 0x27
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void ff(){//00100011 = 0x23
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void stope(){//00100010 = 0x22
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
void rew(){//00100100 0x24
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); //BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); //BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
Pronto, o Tape Deck, respondeu perfeitamente!!!
No caso do programa acima:
- Inicia gravação no Deck b;
- Após 5S, realiza a pausa;
- Após 5S, Avança a fita;
- Após 5S, para;
- Após 5S, play;
- Após 5S, pausa;
- Após 5S, volta;
- Após 5S, para;
- Após 5S, troca o lado da fita;
Segue aplicação utilizada no Arduino Mega, para conversão e controle do Tape Deck JVC W218.
Pode ser modificado para várias aplicações, decodificações...
// Comandos play, avançar, retroceder, gravar, pausar, parar, trocar lado Deck B JVC W218
// Comandos play, avançar, retroceder, parar, trocar lado Deck A JVC W218
// Controle remoto Samsung
// Josicláudio J. Lima
// Podem ser realizados mapeamentos de vários controles, só abrir o Monitor serial do Arduino
#include <IRremote.h>
int RECV_PIN = 8; //Recebe na porta digital 8 receptor IR TSOP38238
IRrecv irrecv(RECV_PIN);
decode_results results;
#define saida 13
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(saida, OUTPUT);
//códigos utilizados hex funcionais 20, 22, 23, 24, 25, 27, 29, 60, 62, 63, 64, 67
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);//Decodifica os dados recebidos para decimal e envia para pc
irrecv.resume();//pega próximo valor
if(results.value == 1784778242){ //comando play 00100000 = 0x20
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3774104872){ //comando pausa 00100101 = 0x25
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3843765582){ //comando gravar 00101001 0x29
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 2770332734){ //comando trocar de lado 00100111 0x27
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3980777284){ //comando avançar 00100011 = 0x23
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3361986248){ //comando parar 00100010 = 0x22
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 1976685926){ //comando retroceder 0x24
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 2331063592){ //comando enter Play Deck A 0x60
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3261853764){ //comando Seta Acima Tlado 0x67
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 1400905448){ //comando Seta dir FF 0x63
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 1972149634){ //comando Seta Esq REW 0x64
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
if(results.value == 3305092678){ //comando Seta baixo Stop 0x62
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(15); // BIT 1
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW);delay(5); // BIT 0
digitalWrite(saida, HIGH);delay(5);digitalWrite(saida, LOW); //END
}
}
}
/*
Mapeamento controle samsung tv AA59-00469A
play 1784778242
rec 3843765582
stop 3361986248
ff 3980777284
pause 3774104872
rew 1976685926
psize 2308325960
cc 2770332734
mts 1150532780
pmode 3135877228
srs 551334792
emanual 1268204482
a 3672802284
b 732942060
c 3038842278
d 1906441864
exit 158659426
return 1003313352
seta baixo 3305092678
seta direita 1400905448
seta esquerda 1972149634
seta superior 3261853764
ok setas 2331063592
info 1908947622
tools 1825097194
menu 1723810024
vol menos 2209452902
vol mais 1752382022
mudo 591444258
canal mais 1595074756
canal menos 412973352
0 3119867746
1 3778927144
2 2908251746
3 657459652
4 4120482440
5 1931099650
6 742730860
7 1167253836
8 1747313982
9 2340753640
hdmi 3241158247
source 3459683302
power 4105841032
ch list 1820560902
content 1809676774
guide 3468072230
*/
Segue o mesmo código mais enxuto, sem escrita no monitor serial
// Comandos play, avançar, retroceder, gravar, pausar, parar, Reversao Deck B JVC W218
// Comandos play, avançar, retroceder, parar, Reversao Deck A JVC W218
// Controle remoto Samsung// Josicláudio J. Lima
#include <IRremote.h>
int RECV_PIN = 8;IRrecv irrecv(RECV_PIN);decode_results results;
#define A digitalWrite(13, HIGH);
#define B digitalWrite(13, LOW);
#define a delay(5);
#define b delay(15);
void setup() {irrecv.enableIRIn();pinMode(13, OUTPUT);}
void loop() {if (irrecv.decode(&results)) {irrecv.resume();
if(results.value == 1784778242){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;}//comando play 0x20
if(results.value == 3774104872){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;b;A;a;B;}//comando pausa 0x25
if(results.value == 3843765582){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;}//comando gravar 0x29
if(results.value == 2770332734){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;b;A;a;B;}//comando Reversao 0x27
if(results.value == 3980777284){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;}//comando avançar 0x23
if(results.value == 3361986248){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;}//comando parar 0x22
if(results.value == 1976685926){A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;}//comando retroceder 0x24
if(results.value == 2331063592){A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;}//comando enter Play Deck A 0x60
if(results.value == 3261853764){A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;b;A;a;B;}//comando Seta Acima reversao 0x67
if(results.value == 1400905448){A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;}//comando Seta dir FF 0x63
if(results.value == 1972149634){A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;}//comando Seta Esq REW 0x64
if(results.value == 3305092678){A;a;B;a;A;a;B;b;A;a;B;b;A;a;B;a;A;a;B;a;A;a;B;a;A;a;B;b;A;a;B;a;A;a;B;}//comando Seta baixo Stop 0x62
}
}
Controle do Tape Deck pela internet com ESP32 Wroom
#include <WiFi.h>
unsigned long previousMillis = 0;
unsigned long interval = 30000;
#define D1 26
#define CONNECT_TIME 10000
#define TIMEOUTTIME 5000
const char* ssid = "your_ssid";
const char* password = "your_password";
WiFiServer server(80);
size_t currentTime = millis();
size_t previousTime = 0;
String header;
void setup() {
pinMode(D1, OUTPUT);
WiFi.begin(ssid, password);
server.begin();}
void loop() {
WiFiClient client = server.available();
if (client) {
currentTime = millis();
previousTime = currentTime;
String currentLine = "";
unsigned long currentMillis = millis();
if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) {
WiFi.disconnect();
WiFi.reconnect();
previousMillis = currentMillis;}
while (client.connected() && currentTime - previousTime <= TIMEOUTTIME) {currentTime = millis();
if (client.available()) {char c = client.read();header += c;
if (c == '\n') {if (currentLine.length() == 0) {
client.println("<br />");
client.println("<h1 style=\"text-align:center; \" class=\"display-4\"><font color='Gold'><i><u>JVC TAPE DECK Control</u></i></h1> ");
if (header.indexOf("GET /D1/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PLAY B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x20
else if (header.indexOf("GET /D2/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PAUSE B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x25
else if (header.indexOf("GET /D3/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: REC B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x29
else if (header.indexOf("GET /D4/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: SIDE B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x27
else if (header.indexOf("GET /D5/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: FF B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x23
else if (header.indexOf("GET /D6/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: STOP B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x22
else if (header.indexOf("GET /D7/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: REW B</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x24
else if (header.indexOf("GET /D8/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PLAY A</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x60
else if (header.indexOf("GET /D9/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: SIDE A</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x67
else if (header.indexOf("GET /D10/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: FF A</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x63
else if (header.indexOf("GET /D11/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: REW A</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x64
else if (header.indexOf("GET /D12/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: STOP A</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0x62
else if (header.indexOf("GET /D13/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='RED'>State: POWER OFF</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0xBF
else if (header.indexOf("GET /D14/on") >= 0) {
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: POWER ON</MARQUEE></2></i>");
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15); // BIT 1
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5); // BIT 0
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END code 0xBE
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<meta charset=\"UTF-8\">");
client.println("<title>JVC TAPE DECK Control</title>");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style> { font-family: Helvetica; display: inline-block; margin: 3px auto; text-align: center;}");
client.println(".mybtn { background-color: #4CAF50; border: 3px solid #4CAF50;border-radius:50px;; color: white; padding: 10px 15px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; }");
client.println(".par { font-size: 16px;}");
client.println("p {text-align: center;}");
client.println("</style></head>");
client.println("<body style=background-color:#000000>");
client.println("<body class=\"bg-light\">");
client.println("<center><table>");
client.println("<td><p><a href=\"/D13/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #B22222!important; color:#f8f9fa!important;\">Pwr OFF</a></p></td>");
client.println("<td><p><a href=\"/D14/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">Pwr ON</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D1/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\" >PLAY B</a></p></td>");
client.println("<td><p><a href=\"/D2/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PAUSE B</a></p></td>");
client.println("<td><p><a href=\"/D3/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:##DC143C!important;\">REC B</a></p></td>");
client.println("<td><p><a href=\"/D4/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SIDE B</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D5/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">FF --- B</a></p></td>");
client.println("<td><p><a href=\"/D6/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">STOP B</a></p></td>");
client.println("<td><p><a href=\"/D7/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">REW B</a></p></td>");
client.println("<td><p><a href=\"/D8/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PLAY A</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D9/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SIDE A</a></p></td>");
client.println("<td><p><a href=\"/D10/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">FF --- A</a></p></td>");
client.println("<td><p><a href=\"/D11/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">REW A</a></p></td>");
client.println("<td><p><a href=\"/D12/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">STOP A</a></p></td>");
client.println("</tr>");
client.println("</div>");
client.println("</body></html></div></form></table></center>");
client.println();
break;} else {
currentLine = "";}}
else if (c != '\r') {
currentLine += c;}}}
header = "";
client.stop();}
delay(1);}
Atenção: Obrigatórios o diodo e resistor de 1K.
Código completo com as funções de busca, quanto a função rec A, se conseguir mande na mensagem.
//The CODE
#include <WiFiManager.h>
#include <WiFi.h>
unsigned long previousMillis = 0;
unsigned long interval = 30000;
#define D1 26
#define CONNECT_TIME 10000
#define TIMEOUTTIME 5000
const char* ssid = "Sua REDE"; < ---------------------------------
const char* password = "SUA SENHA"; < -------------------------------
WiFiServer server(80);
size_t currentTime = millis();
size_t previousTime = 0;
String header;
void setup() {
pinMode(D1, OUTPUT);
WiFi.begin(ssid, password);
server.begin();
// WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
// it is a good practice to make sure your code sets wifi mode how you want it.
// put your setup code here, to run once:
Serial.begin(115200);
//WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wm;
// reset settings - wipe stored credentials for testing
// these are stored by the esp library
// wm.resetSettings();
// Automatically connect using saved credentials,
// if connection fails, it fims an access point with the specified name ( "AutoConnectAP"),
// if empty will auto generate SSID, if password is blank it will be anonymous AP (wm.autoConnect())
// then goes into a blocking loop awaiting configuration and will return success result
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
// res = wm.autoConnect("AutoConnectAP"); // anonymous ap
res = wm.autoConnect("AutoConnectAP","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect");
// ESP.refim();
}
else {
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
}
}
void loop() {
WiFiClient client = server.available();
if (client) {
currentTime = millis();
previousTime = currentTime;
String currentLine = "";
unsigned long currentMillis = millis();
if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) {
WiFi.disconnect();
//WiFi.reconnect();
previousMillis = currentMillis;}
while (client.connected() && currentTime - previousTime <= TIMEOUTTIME) {currentTime = millis();
if (client.available()) {char c = client.read();header += c;
if (c == '\n') {if (currentLine.length() == 0) {
client.println("<br />");
client.println("<h1 style=\"text-align:center; \" class=\"display-4\"><font color='Gold'><i><u>Tape Deck JVC</u></i></h1> ");
if (header.indexOf("GET /D1/on") >= 0) { // Play B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PLAY B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();zero();zero();zero(); fim();}} //code 0x20
else if (header.indexOf("GET /D2/on") >= 0) { //PAUSE B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PAUSE B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();um();zero();um();fim();}} //code 0x25
else if (header.indexOf("GET /D3/on") >= 0) { // REC B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: REC B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();um();zero();zero();um();fim();}} // code 0x29
else if (header.indexOf("GET /D4/on") >= 0) { // SIDE B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: SIDE B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();um();um();um();fim();}} //code 0x27
else if (header.indexOf("GET /D5/on") >= 0) { // FF B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: FF B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();zero();um();um();fim();}} //code 0x23
else if (header.indexOf("GET /D6/on") >= 0) { // POWER ON
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: POWER ON</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){um();zero();um();um();um();um();um();zero();fim();}} //code 0xBE
else if (header.indexOf("GET /D7/on") >= 0) { // STOP B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: STOP B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();zero();um();zero();fim();}} //code 0x22
else if (header.indexOf("GET /D8/on") >= 0) { // REW B
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: REW B</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();zero();um();zero();zero();fim();}} //code 0x24
else if (header.indexOf("GET /D13/on") >= 0) { // PLAY A
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: PLAY A</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();um();um();zero();zero();zero();zero();zero();fim();}} //code 0x60
else if (header.indexOf("GET /D10/on") >= 0) { // POWER OFF
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State:POWER OFF</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){um();zero();um();um();um();um();um();um();fim();}} //code 0xBF
else if (header.indexOf("GET /D11/on") >= 0) { // FF A
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: FF A</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();um();um();zero();zero();zero();um();um();fim();}} //code 0x63
else if (header.indexOf("GET /D12/on") >= 0) { // REW A
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Cyan'>State: REW A</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();um();um();zero();zero();um();zero();zero();fim();}} //code 0x64
else if (header.indexOf("GET /D9/on") >= 0) { // STOP A
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='RED'>State: STOP A</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();um();um();zero();zero();zero();um();zero();fim();}} //code 0x62
else if (header.indexOf("GET /D14/on") >= 0) { // SIDE A
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: SIDE A</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();um();um();zero();zero();um();um();um();fim();}} //code 0x67
else if (header.indexOf("GET /D15/on") >= 0) { // -<<
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: - << </MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();um();um();zero();zero();fim();}} //code 0x2C
else if (header.indexOf("GET /D16/on") >= 0) { // +>>
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Gold'>State: + >> </MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();um();zero();um();um();fim();}} //code 0x2B
else if (header.indexOf("GET /D17/on") >= 0) { // REC MUTE
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: REC MUTE</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();um();um();zero();fim();}} // code 0x26
else if (header.indexOf("GET /D18/on") >= 0) { // REC PAUSE
client.println("<h2 style=\"text-align:center; \" class=\"display-4\"><i><MARQUEE BEHAVIOR=SCROLL WIDTH=30%><font color='Crimson'>State: REC PAUSE</MARQUEE></2></i>");
for (int i = 0; i < 1; i++){zero();zero();um();zero();um();um();zero();um();fim();}} // code 0x2D
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width(); initial-scale=1\">");
client.println("<meta charset=\"UTF-8\">");
client.println("<title>Controle Tape Deck JVC</title>");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style> { font-family: Helvetica; display: inline-block; margin: 3px auto; text-align: center;}");
client.println(".mybtn { background-color: #4CAF50; border: 3px solid #4CAF50;border-radius:50px;; color: white; padding: 10px 15px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; }");
client.println(".par { font-size: 16px;}");
client.println("p {text-align: center;}");
client.println("</style></head>");
client.println("<body style=background-color:#000000>");
client.println("<body class=\"bg-light\">");
client.println("<center><table>");
client.println("<td><p><a href=\"/D6/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:#f8f9fa!important;\" >POWER ON</a></p></td>");
client.println("<td><p><a href=\"/D10/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">POWER OFF</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D1/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PLAY B</a></p></td>");
client.println("<td><p><a href=\"/D2/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PAUSE B</a></p></td>");
client.println("<td><p><a href=\"/D3/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:#f8f9fa!important;\">REC B</a></p></td>");
client.println("<td><p><a href=\"/D4/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SIDE B</a></p></td>");
client.println("<tr>");
client.println("<td><p><a href=\"/D5/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">FF B</a></p></td>");
client.println("<td><p><a href=\"/D7/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">STOP B</a></p></td>");
client.println("<td><p><a href=\"/D8/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">REW B</a></p></td>");
client.println("<td><p><a href=\"/D14/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">SIDE A</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D13/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">PLAY A</a></p></td>");
client.println("<td><p><a href=\"/D9/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">STOP A</a></p></td>");
client.println("<td><p><a href=\"/D11/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">FF A</a></p></td>");
client.println("<td><p><a href=\"/D12/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\">REW A</a></p></td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td><p><a href=\"/D15/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> - << </a></p></td>");
client.println("<td><p><a href=\"/D16/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #198754!important; color:#f8f9fa!important;\"> + >> </a></p></td>");
client.println("<td><p><a href=\"/D17/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:#f8f9fa!important;\">REC MUTE </a></p></td>");
client.println("<td><p><a href=\"/D18/on\" role=\"button\" class=\" mybtn btn btn-success mybtn\"style=\"background-color: #DC143C!important; color:#f8f9fa!important;\">REC PAUSE</a></p></td>");
client.println("</tr>");
client.println("</div>");
client.println("</body></html></div></form></table></center>");
client.println();
break;} else {
currentLine = "";}}
else if (c != '\r') {
currentLine += c;}}}
header = "";
client.stop();}
delay(1);}
void um(){
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(15);} // BIT 1
void zero(){
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);delay(5);} // BIT 0
void fim(){
digitalWrite(D1, HIGH);delay(5);digitalWrite(D1, LOW);} //END CODE










.jpg)