ich bin gerade am testen für ein Kleine Projekt, ich versucht einen Sensor mit OneWire aus zu lesen. Letzt endlich habe ich es geschafft, nach einigem Probieren.
Jetzt bin ich aber etwas verwirrt:
ich hatte folgendes PinOut, bzw. habe mir ein eigenes erstellt (siehe Bilder).
Als Grundlage zum Testen habe ich das Sketch DS18x20_Temperatur aus der OneWire Bibliothek verwendet.
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// https://github.com/milesburton/Arduino-Temperature-Control-Library
OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)
hier wird der Pin 10 als Pin definiert. Doch leider habe ich keine Beschreibung gefunden wo diese Pinnummeriernung aufgelistet ist.
Nach einigen versuchen habe ich herausgefunden dass Pin 10 SK ist. (Siehe Bild Anschluss DS18B20)
und in der util/OneWire_direct_gpio.h findet sich folgendes:
#elif defined(ARDUINO_ARCH_ESP8266)
// Special note: I depend on the ESP community to maintain these definitions and
// submit good pull requests. I can not answer any ESP questions or help you
// resolve any problems related to ESP chips. Please do not contact me and please
// DO NOT CREATE GITHUB ISSUES for ESP support. All ESP questions must be asked
// on ESP community forums.
#define PIN_TO_BASEREG(pin) ((volatile uint32_t*) GPO)
#define PIN_TO_BITMASK(pin) (1 << pin)
#define IO_REG_TYPE uint32_t
#define IO_REG_BASE_ATTR
#define IO_REG_MASK_ATTR
#define DIRECT_READ(base, mask) ((GPI & (mask)) ? 1 : 0) //GPIO_IN_ADDRESS
#define DIRECT_MODE_INPUT(base, mask) (GPE &= ~(mask)) //GPIO_ENABLE_W1TC_ADDRESS
#define DIRECT_MODE_OUTPUT(base, mask) (GPE |= (mask)) //GPIO_ENABLE_W1TS_ADDRESS
#define DIRECT_WRITE_LOW(base, mask) (GPOC = (mask)) //GPIO_OUT_W1TC_ADDRESS
#define DIRECT_WRITE_HIGH(base, mask) (GPOS = (mask)) //GPIO_OUT_W1TS_ADDRESS
ich kanns dir nicht erklären und vieleicht bin ich auch auf der falschen Spur. Aber ich würde mich einfach mit "reagiert halt anders als digitalwrite" abfinden.