Saya membuat sensor nirkabel menggunakan Attiny85. Saya ingin mengirim data ke arduino uno, jadi saya membeli kit tautan rf 315mhz dari spark fun. Karena Attiny85 tidak memiliki TX, saya memutuskan untuk menggunakan perpustakaan Manchester namun tidak dapat dikompilasi di Attiny85.
Saya mengikuti langkah-langkah dari blog ini: http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192
Berikut adalah kode yang saya gunakan:
#include <WProgram.h> //otherwise it says it can't find Arduino.h
#include <Manchester.h> //include the library to comunicate
#define TxPin 2 //the pin that is used to send data
int sensorPin = 4;
int ledPin = 3;
int count = 50;
void setup(){
pinMode (ledPin, OUTPUT);
man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
man.setupTransmit(TxPin, MAN_1200); //set transimt pin
}
void loop(){
if (count == 50){
digitalWrite (ledPin, HIGH);
count = 0;
}
int data = analogRead(sensorPin);
man.transmit(data); //transmits and reads the data
delay (100);
count ++;
}
Ini pesan kesalahannya:
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp: In function 'void MANRX_SetupReceive(uint8_t)':
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'TCCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'WGM21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'TCCR2B' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'CS21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:369: error: 'OCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'TIMSK2' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'OCIE2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:380: error: 'TCNT2' was not declared in this scope
Jawaban:
attiny tidak memiliki opsi yang diperlukan untuk memungkinkan perpustakaan Manchester berfungsi dengan baik pada perangkat ATtinyX5, khususnya definisi
__AVR_ATtinyX5__
kapan suatu perangkat dipilih. Bahkan, ada beberapa hal yang hilang.Paket yang saya gunakan untuk dukungan ATtinyX5 adalah arduino -tiny . Saya telah memverifikasi bahwa itu mendefinisikan simbol itu dengan benar. Saya sarankan Anda membuang paket dukungan Anda saat ini dan menginstal arduino-tiny sebagai gantinya.
sumber
Setelah berjuang sendiri, saya dapat memastikan bahwa solusi Joel berhasil.
Ada cukup banyak posting di sekitar yang menunjukkan bahwa Anda tidak dapat membuat Manchester bekerja dengan Arduino1.0x dan Anda perlu 0020. Tetapi Anda bisa.
Kuncinya adalah menggunakan arduino-tiny dari tautan di atas, letakkan folder mungil yang Anda dapatkan dari sana di / hardware dan kemudian ubah nama menjadi attiny dan "calon papan" ke papan.
Saya menyadari bahwa ini tidak mengatakan apa pun yang sudah dimiliki oleh Joel, tetapi ada begitu banyak informasi yang saling bertentangan dan kontradiktif di sekitar saya sehingga saya pikir ini layak untuk ditambahkan dalam pengalaman saya.
sumber
Punya masalah yang sama menggunakan lib ini dengan Trinket 8 MHz, tetapi berhasil menyelesaikannya dengan menambahkan
#define __AVR_ATtinyX5__
ke file hardware / attiny / varian / tiny8 / pins_arduino.h. Saya menggunakan paket dukungan Adafruit untuk ATtiny. Mungkin sedikit hack, tapi saya masih bisa membangun untuk UNO, dengan memilih papan di Arduino IDE 1.0.5.sumber