Apakah SoftwareSerial ditinggalkan untuk ATTiny85 / 84?


8

Saya ingin menggunakan SoftwareSerial dengan ATTiny85 saya dan ketika saya google beberapa proyek mengklaim bahwa mereka menggunakannya ... Saya mengunduh perangkat keras dari https://code.google.com/p/arduino-tiny/ , tetapi ketika saya mencoba untuk menambahkan SoftwareSerial dan kompilasi saya dapatkan:

fatal error: SoftwareSerial.h: No such file or directory

Mengalihkan papan ke UNO membuat masalah hilang, jadi apakah mereka meninggalkannya? Bagaimana saya bisa memperbaikinya?


Tidak dapat menduplikasi
Ignacio Vazquez-Abrams

Saya melakukan duplikat dengan Arduino IDE 1.6.3 dan menemukan jawaban (di bawah).
Eric Lee

Jawaban:


6

Jawaban singkat - tidak. Itu tidak ditinggalkan, sebaliknya.

Tetapi sebelum membahas kesalahan kompiler yang Anda sebutkan, klarifikasi kecil:

Saya mengunduh perangkat keras dari https://code.google.com/p/arduino-tiny/

Tautan yang Anda berikan bukan perangkat keras , tetapi perangkat lunak yang disebut file inti ATtiny . Ini berisi file yang diperlukan yang akan membantu Anda mengkompilasi dan mengunggah kode dari Arduino IDE ke ATtiny (bahkan ketika menggunakan ArduinoISP sebagai programmer).

The SoftwareSerial adalah perpustakaan yang dilengkapi dengan Arduino IDE zip / instalasi. Jika Anda telah mengunduh versi terbaru Arduino IDE dari Situs Web Arduino , Anda harus dapat menemukan file perpustakaan SoftwareSerial yang terletak di:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Contoh untuk file pustaka SoftwareSerial yang seharusnya Anda temukan ada SoftwareSerial.cpp dan SoftwareSerial.h .

kesalahan fatal: SoftwareSerial.h: Tidak ada file atau direktori tersebut

Kesalahan kompiler yang Anda terima tampaknya menyiratkan bahwa kompiler tidak dapat menemukan file header (SoftwareSerial.h) untuk pustaka SoftwareSerial. Ini memang tampak cukup aneh, karena perpustakaan ini tidak memerlukan instalasi khusus, dan seperti yang disebutkan, adalah bagian dari perpustakaan yang dibangun ke dalam instalasi IDE Arduino.

Jadi, untuk mengurangi ini, saya akan merekomendasikan bahwa Anda akan:

  • Pastikan folder perpustakaan ada di lokasi yang disebutkan di atas
  • Jika tidak, maka Anda mungkin harus mengunduh ulang instalasi Arduino IDE, dan setelah itu instal file inti ATtiny sesuai petunjuk (penting!). Instruksi instalasi terletak di file README di dalam file zip inti ATTiny (tiny \ avr \ README).
  • Jika memang ada, dan Anda masih mendapatkan kesalahan kompiler ini, maka Anda harus memiliki instalasi yang rusak (mungkin kompilator termasuk folder kacau). Saya masih akan merekomendasikan mengikuti instalasi ulang seperti yang disebutkan dalam peluru sebelumnya.
  • Pastikan bahwa Anda dapat menemukan ATtiny 85 di daftar board, di Tools-> Board dan dipilih.
  • Sudut lain yang mungkin menjelaskan kesalahan ini, adalah untuk mengaktifkan output verbose untuk kompiler (Anda dapat melakukannya di Arduino IDE, dengan memilih File-> Preferences-> "Tampilkan keluaran verbose selama" dan memeriksa "kompilasi) "). Output Verbose dapat membantu Anda melacak kesalahan baris perintah kompiler, seperti folder include yang hilang.
  • Terakhir tetapi tidak kalah pentingnya, jika folder SoftwareSerial ada, Anda dapat menggunakan Arduino IDE untuk memeriksa apakah IDE dapat mengidentifikasi keberadaannya, dengan masuk ke Sketch-> Import Library, dan mencari SoftwareSerial . Jika tidak ada di sana, maka folder tidak terletak dengan benar di bawah 'perpustakaan', verifikasi jalur seperti yang disebutkan di atas (apakah Anda memindahkannya?)

Terakhir, ketika Anda dapat mengkompilasi kode Anda, coba gunakan contoh SoftwareSerial yang disertakan dengan perpustakaan untuk memeriksanya. Perhatikan bahwa itu tidak akan berfungsi 'di luar kotak' seperti halnya dengan Arduino Uno; ATtiny tidak memiliki perangkat keras FTDI yang sama untuk berkomunikasi langsung dengan USB, jadi untuk mengirim dan menerima pesan serial menggunakan ATtiny Anda harus menggunakan Arduino Uno sebagai proxy (menggunakan pin Uno 0 & 1) atau menggunakan dedicated Perangkat keras USB to Serial mirip dengan yang ini .

Beralih papan ke UNO membuat masalah hilang

Sebagai catatan, beralih ke Uno akan membuat sebagian besar masalah ATtiny 'pergi' karena Uno jauh lebih lengkap dari ATtiny85 / 4, baik di tingkat MCU dan di tingkat papan breakout, yang Anda dapatkan dengan Uno (dan yang tidak Anda dapatkan ketika bekerja langsung dengan chip seperti ATtiny). Juga, sebagian besar basis kode di luar sana menargetkan Uno dan bukan ATTiny. Jadi jika Anda melakukan langkah pertama Anda dengan ATtiny, bersiaplah bahwa banyak hal yang 'baru saja bekerja' dengan Uno akan membutuhkan kode tambahan / berbeda sebelum mereka dapat bekerja dengan ATtiny (dan beberapa tidak akan berfungsi sama sekali).

Anda dapat menggunakan kode Analog ke Serial saya yang sederhana:

/*
Takes an input on the AtTiny85 from the VERY TRICKY analogue input pin 2 (as labeled in HLT tutorial)
 and outputs these with Software serial to the arduino uno, or Duemillanove
 Hookup
 ATTINY85 pin 3 -> Arduino Uno pin 0
 ATTINY85 pin 4 -> Arduino Uno pin 1

http://www.instructables.com/id/Easy-ATTiny-Serial-Communication-with-Tiny-AVR-Pro/
 */


#include <SoftwareSerial.h>
// Definitions
#define rxPin 4
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
int sensorPin = 7; //ACTUALLY PIN LABELED AS "2" on the HLT tutorial
int sensorVal = -1;


// the setup routine runs once when you press reset:
void setup() {
  pinMode(sensorPin, INPUT);
  mySerial.begin(9600);
analogWrite(0,1); // This is kind a heart beat to show the ATTINY is "alive"
}

// the loop routine runs over and over asensorpingain forever:
void loop() {
  sensorVal = analogRead(sensorPin);
  mySerial.print("Input Val: ");
  mySerial.print(sensorVal);
  mySerial.println();
}

3

Di bawah ini Anda dapat menemukan kode untuk implementasi serial pengiriman bit-bang minimal yang ideal untuk debugging. Ukuran kode adalah sekitar 60 byte.

Ini memberikan 38400 baud untuk 1 MHz atau 230400 baud pada 8 MHz Attiny clock.

Saya menulisnya untuk Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

Saya memiliki masalah yang sama dan tampaknya dengan Arduino IDE 1.6.x, perpustakaan didefinisikan "per papan" dan tidak dibagi lagi. Setidaknya, tidak semua perpustakaan dibagikan, dan SoftwareSerial tampaknya adalah salah satunya.

Jadi solusinya adalah menyalin perpustakaan SoftwareSerial dari instalasi Arduino di [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialke folder perangkat keras ATTiny Anda di [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial, dan restart IDE, sesuai [utas ini]. 1


0

Ya, dalam IDE 1.6.x, perpustakaan didefinisikan "per papan", mereka berada di folder khusus dan disediakan oleh atuhor bundel papan. Perpustakaan Digispark bernama SoftSerial dan disertakan. Dalam IDE Periksa File / Contoh / DigisparkSoftSerial. Juga periksa https://digistump.com/wiki/digispark/tutorials/debugging

Singkatnya, Anda harus memasukkan:

   #include <SoftSerial.h>
   #include <TinyPinChange.h> 

dan kemudian menentukan pin RX dan TX (bisa juga sama dalam kasus khusus):

   SoftSerial mySerial(SOFT_RX_PIN, SOFT_TX_PIN); // RX, TX

Kemudian gunakan mySerial.println()& co.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.