ATTINY85 HC-05 BLUETOOTH SOFTWARESERIAL DEVICE

На модуле hc-05 все ноги подписаны, подключение для нашего примера очень просто. Земля к земле, питание к питанию, RX к TX и TX к RX. Диод подключается одной ногой резистра 220 ОМ к пину МК, а другой к катоду самого диода, в то время как анод, соответственно, идет на землю.  Как заливать скетчи в МК, читайте здесь.

ATtiny45 85

#define F_CPU 1200000UL // Указываем тактовую частоту МК
//Программа загружается в МК при internal clock 1 Mhz из ядра от ATtiny microcontrollers. 
//Если при загрузке скетча проиходит сбой, следует тыкнуть кнопку ресет на ардуинке. 
//Кондер на 10 мФ должен быть подключен.
#include  //Подключаем библиотеку серийного порта
SoftwareSerial mySerial(1, 0); //rx, tx 
char data = 0;            // Переменная для хранения принятых данных
const int rx = PB1; //Объявляем ноги приема-передачи серийного порта
const int tx = PB0;
int led = PB2; //Объявляем пин диода

void setup()
{
  pinMode(led, OUTPUT);
  mySerial.begin(9600); //стартуем серийный порт
  mySerial.println("Program started..."); //Пишем в порт, что программа запустилась.
  DDRB |= (1 << led);   // конфигурируем пин диода как выход
  PORTB &= ~(1 << led); // по умолчанию светодиод выключен

}

void loop()
{

  if (mySerial.available() > 0)     // Если есть принятые данные
  {
    data = mySerial.read();        // Принимаем эти данные и сохраняем в переменной data
    mySerial.print(data);          // Выводим данные из data в монитор серийного порта
    mySerial.print("\n");
    if (data == '1')             // Если data равна 1
      PORTB ^= (1 << led) & mySerial.println("Light ON!");   // Включаем светодиод, инвертируя состояние пина

    else if (data == '0')        //  Если data равна 0
      PORTB &= ~(1 << led) & mySerial.println("Light Off!");     // Выключаем светодиод, инвертируя состояние пина
  }

}