Stap 1: ATTiny 85 USI
Eerst wilden we gebruik en ATTiny 85. De kleine AVR-chip die is compact en laag stroomverbruik. De ATtiny 85 (en zijn neven) hebben geen I2C of SPI hardware ingebouwd, maar eerder USI (Universal Serial Interface). USI kan worden gebruikt om de I2C en SPI. Deze methoden kunnen ook worden gebruikt voor het programmeren van de ATTiny met behulp van de Raspberry Pi.
Hardware haak omhoog is eenvoudig voor dit als u gebruik wilt maken SPI MOSI verbinden met MOSI, MISO aan MISO, en CLK te CLK. I2C de SDA verbinden met SDA, SCL naar SCL, en toevoegen van pull up resisters (4.7 k ohm op 5V) voor het te laten werken. Ik stel met behulp van I2C aangezien één minder pin duurt en pinnen beperkt zijn en I2C bibliotheek voor de ATTiny zijn beter gedocumenteerd.
ATTiny USI bibliotheek kan worden gevonden hier. De bibliotheek is eenvoudig te gebruiken en kan eenvoudig worden geïmplementeerd.
Dit is de Code voor de ATTiny. De code gewoon echos wat wordt verzonden naar het en knippert een LED een gelijke hoeveelheid tijd.
#include < TinyWireS.h >
#define SLAVE_ADDRESS 0x04
#define LED1_PIN 4 / / ATtiny Pin 3
VOID Setup
{
pinMode(LED1_PIN,OUTPUT);
Blink(LED1_PIN,2); Toon dat it 's alive
TinyWireS.begin(SLAVE_ADDRESS);
}
void loop
{
byte byteRcvd = 0;
if(TinyWireS.available())
{
byteRcvd = TinyWireS.receive();
TinyWireS.send(byteRcvd);
Knipperen (LED2_PIN, byteRcvd);
}
}
VOID Blink (byte geleid, byte times) {}
voor (byte ik = 0; ik < keer; i ++) {}
digitalWrite(led,HIGH);
vertraging (25);
digitalWrite(led,LOW);
vertraging (17);
}
}
Dit is een eenvoudige code voor de Raspberry Pi gedaan in python. De code wordt afgedrukt wat de ATTiny echos terug en stuurt een geheel getal van uw keuze.
importeren van smbus
importeren van timebus = smbus. SMBus(1)
adres = 0x04
terwijl juist:
i2cread = bus.read_byte(address)
afdrukken van i2cread time.sleep(0.1)
Using zulks die u kundig zitten moet doen fundamentele testen en zorg ervoor dat er geen hardwareprobleem. Echter, later vonden we dat de bibliotheek beperkt aangezien er probleem doet snelle communicatie en resulteerde in frequente crashen. Dit geduwd naar ATMegas dat toestaat is voor ons de Arduino draad bibliotheek.