Thư viện Manchester sẽ không biên dịch cho Attiny85


8

Tôi đang tạo một cảm biến không dây bằng Attiny85. Tôi muốn gửi dữ liệu đến một arduino uno, vì vậy tôi đã mua bộ liên kết rf 315 mhz từ spark fun. Vì Attiny85 không có TX, tôi đã quyết định sử dụng thư viện Manchester tuy nhiên nó sẽ không được biên dịch trên Attiny85.

Tôi đã làm theo các bước từ blog này: http://mchr3k-arduino.blogspot.mx/2012/01/wless-sensor-node-part-2.html?showTHER=1338749638806#c853067277980266192

Đây là mã tôi đang sử dụng:

    #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 ++;
 }

Đây là thông báo lỗi:

/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

Gói nào bạn đang sử dụng để hỗ trợ Arduino ATtinyX5?
Ignacio Vazquez-Abrams

Tôi đã thử một cái từ blog mà tôi đã tham khảo nhưng sau khi tìm kiếm trên google tôi thấy rằng Tập đoàn công nghệ thấp MIT có một cái nên tôi cũng đã thử cái đó. Một từ MIT High Low Tech là từ trang này highlowtech.org/?p=1695
Joel

Tôi đã thực hiện tất cả các đề xuất của Joel và Ignacio liên quan đến việc sử dụng thư viện arduino-tiny thay vì bậc thầy attiny từ trang nhóm công nghệ thấp MIT. Cuối cùng tôi đã có các bảng ATTINY85 để hiển thị trong menu bảng của mình, nhưng tôi vẫn nhận được lỗi "người đàn ông không khai báo trong phạm vi" với mã trên. Bất kỳ đề xuất?

Bạn đã nhập thư viện manchester vào Arduino IDE? hoặc đặt nó trong thư mục thư viện?
Joel

Câu trả lời:


5

attiny thiếu một tùy chọn cần thiết để cho phép thư viện Manchester hoạt động chính xác trên các thiết bị ATtinyX5, cụ thể là định nghĩa __AVR_ATtinyX5__khi nào thiết bị được chọn. Trên thực tế, nó thiếu khá nhiều thứ.

Gói tôi sử dụng để hỗ trợ ATtinyX5 là arduino-tiny . Tôi đã xác minh rằng nó xác định đúng biểu tượng đó. Tôi khuyên bạn nên bỏ gói hỗ trợ hiện tại của mình và cài đặt arduino-tiny thay thế.


Tôi đã tải xuống arduino-tiny-0150-0020.zip. Giải nén tệp sau đó kéo thư mục có tên tiny vào thư mục phần cứng tôi đã tạo bên trong thư mục arduino. Tuy nhiên, khi tôi đi đến ide, tôi đã tìm kiếm dưới các bảng và loạt bảng Attiny không xuất hiện.
Joel

Cách chính xác để thêm gói vào băng là gì?
Joel

Phiên bản IDE nào bạn đang chạy?
Ignacio Vazquez-Abrams

Arduino1.0.5 trên mac osx 10.9.2
Joel

Sau đó, bạn sẽ cần tải xuống gói hỗ trợ cho 1.0.x thay vì gói 1.5.x.
Ignacio Vazquez-Abrams

4

Sau khi tự mình đấu tranh, tôi có thể xác nhận rằng giải pháp của Joel hoạt động.

Có khá nhiều bài viết xung quanh cho thấy rằng bạn không thể khiến Manchester hoạt động với Arduino1.0x và bạn cần 0020. Nhưng bạn có thể.

Điều quan trọng là sử dụng arduino-tiny từ liên kết ở trên, đặt thư mục nhỏ mà bạn nhận được từ đó trong / phần cứng và sau đó đổi tên nó thành attiny và các bảng triển vọng tiềm năng.

Tôi nhận ra rằng điều này không nói gì nhiều hơn Joel đã có, nhưng có rất nhiều thông tin mâu thuẫn và mâu thuẫn xung quanh tôi nghĩ rằng nó sẽ đáng để thêm vào kinh nghiệm của tôi


0

Có cùng một vấn đề khi sử dụng lib này với Trinket 8 MHz, nhưng đã giải quyết nó bằng cách thêm #define __AVR_ATtinyX5__vào phần cứng tệp / attiny / biến thể / tiny8 / pin_arduino.h. Tôi đang sử dụng gói hỗ trợ Adaf nhung cho ATtiny. Có lẽ một chút hack, nhưng tôi vẫn có thể xây dựng cho UNO, bằng cách chọn bảng trong Arduino IDE 1.0.5.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.