Domanda su sketch 1-Wire

Ciao a tutti,
ho trovato diversi sketch su questo tipo di protocollo, ma tutti si basano sul sensore di temperatura e simili… ma se volessi utilizzare questo protocollo solo come “interruttore”, tipo: ON/OFF, è fattibile?

#include "OneWireSlave.h"
//                     {Fami, ----, ----, ----, -ID-, ----, ----,  CRC} 
unsigned char rom[8] = {0x28, 0xAD, 0xDA, 0xCE, 0x0F, 0x00, 0x11, 0x00};
//                            {TLSB, TMSB, THRE, TLRE, Conf, 0xFF, Rese, 0x10,  CRC}
unsigned char scratchpad[9] = {0xB4, 0x09, 0x4B, 0x46, 0x1F, 0xFF, 0x00, 0x10, 0x00};

OneWireSlave ds(2);

//Interrupt
volatile long previousmicros = 0;
volatile long old_previousmicros = 0;
volatile long difference = 0;

//Blinking
const int ledPin =  13;
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated
long interval = 500;           // interval at which to blink (milliseconds)

void setup() {
  pinMode(ledPin, OUTPUT);
  ds.init(rom);
  ds.setScratchpad(scratchpad);
  attachInterrupt(1, DS18B20, CHANGE);
}

void loop() {
  blinking();
  //ds.waitForRequest(false);
}

void DS18B20() {
  old_previousmicros = previousmicros;
  previousmicros = micros();
  difference = previousmicros - old_previousmicros;
  if (difference >= 420 && difference <= 640) {
    ds.waitForRequestInterrupt(false);
  }
}

void blinking() {
  unsigned long currentMillis = millis(); 
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
    digitalWrite(ledPin, ledState);
  }
}

Mod: perdonami, il browser qui non mostrava l’editor avanzato.

ma se volessi utilizzare questo protocollo solo come "interruttore", tipo: ON/OFF, è fattibile?

Spiega meglio, ad esempio vorresti una lib per creare uno slave con cui scambiare informazioni sfruttando il protocollo in questione e impegnando così un solo pin?

O cos'altro intendevi con ON/OFF?

Ciao.

mi spiego meglio, vorrei che alle pressione di un comune tasto, come potrebbe essere quello del campanello di casa, arduino codifichi questo valore "1", e lo invii tramite questo protocollo alla mia centralina di casa, così che la mia centralina interpreti la pressione del tasto remoto.

Si dovrebbe sapere se e come richiede la centrallina questa informazione, in poche parole il protocollo dei dati.
L’ interfaccia 1-Wire definisce solo come sono decodificati dei numeri, non come devono essere interpretati i numeri trasmessi.
Ciao Uwe

La MAXIM ha ideato un famiglia di IC che potrebbero fare al caso tuo.

Il DS2408, ad esempio, può trasferire via OneWire 8 canali I/O.

Ad esempio, puoi controllare 4 uscite digitali e 4 ingressi digitali.

Si deve stabilire chi è il Master e chi gli slave. Quella che nomini "centralina" dovrebbe essere il master, su questa gira il firmware che usa la libreria con cui sei venuto a conoscenza. Per gli slave la cosa è un poco più complessa, di immediato puoi cercare iButton - iButtonLink.

Il miglior punto di partenza è Maxim, come dice @cyberhs, 1-wire l'hanno inventato loro. Maxim-Appnote_1-wire

Anche il seguente link potrebbe essere una fonte di informazioni maggiormente commestibili:http://sheepdogguides.com/dst1main.htm

Comunque c'è da impiegare molto tempo per documentarsi e si deve avere la giusta motivazione.

Ciao.

Grandi! Adesso consulto subito i link e il DS2408.

Vi aggiorno :)

grazie mille :)