poniedziałek, 4 lipca 2016

Wakacyjne porządki - zegarek w 30 minut



Stwierdziłem ostatnio, że mam za dużo podzespołów czekających na wykorzystanie w większych projektach, które leżą w szafie i się marnują :( Trzeba było więc coś z tym zrobić.

Co leżało u mnie w szafie:
- moduł matryc dwukolorowych 32x16
- modulik z DS1307
- oczywiście arduino

Co z tego zrobiłem – prosty zegarek – przyda się zawsze – leży sobie teraz nad „kącikiem warsztatowym” całość w stylu amerykańskiego DIY – wszystko luźno na przewodach.




Wszystkie informacje są w tych dwóch linkach:
Cały kod prezentuje się w ten sposób:

#include "myMATRIX.h"
#include <Wire.h>
#include <DS1307.h>

#define RowA_Pin 2
#define RowB_Pin 3
#define RowC_Pin 4
#define RowD_Pin 5
#define OE_Pin 6
#define Red_Pin 7
#define Green_Pin 8
#define CLK_Pin 9
#define STB_Pin 10

DS1307 clock;
RTCDateTime dt;

void setup ()
{
  myMatrix.Init(Red_Pin, Green_Pin, CLK_Pin, RowA_Pin, RowB_Pin, RowC_Pin, RowD_Pin, OE_Pin, STB_Pin);

  clock.begin();

  // If date not set
  if (!clock.isReady())
  {
    // Set sketch compiling time
    clock.setDateTime(__DATE__, __TIME__);
  }
}
char tablica[20];
void loop()
{
  dt = clock.getDateTime();
  String napis = "";
  if ( dt.hour < 10 )
  {
    napis += "0";
  }
  napis += String(dt.hour);
  napis += ":";
  if ( dt.minute < 10 )
  {
    napis += "0";
  }
  napis += String(dt.minute);
  napis.toCharArray(tablica, 20);
  myMatrix.printString(2, 4, red, black, tablica);
  myMatrix.drawVLine(0, 3, 11, green);
  myMatrix.drawVLine(31, 3, 11, green);
  myMatrix.drawHLine(0,31,11,green);
  myMatrix.drawHLine(0,31,3,green);
  delay(1000);

}



Całość od pomysłu do zakończenia wraz z wykonywaniem połączeń zajęła mniej niż 30 minut, a moduły nie nudzą się w oczekiwaniu na ich docelowe wykorzystanie :)

wtorek, 14 czerwca 2016

MobaXterm - terminal i dużo więcej

Podczas pracy z Raspberry Pi potrzebujemy program z terminalem - zazwyczaj jest to Putty, często używamy też jednocześnie programu do przesyłania plików np WinSCP, a co gdyby mieć to wszystko w jednym programiku?

niedziela, 12 czerwca 2016

EAGLE płytki PCB w 3D

Natknąłem się na bardzo fajną stronkę: http://3dbrdviewer.cytec.bg pozwala ona na wygenerowanie podglądu 3D naszej płytki w przeglądarce. Wystarczy wrzucić sam plik .brd i po chwili ukaże nam się coś fajnego:








Żeby nie było jednak zbyt pięknie na początku program nie rozpoznaje wielu komponentów, więc trzeba mu wskazać poprawne modele 3d (baza jest dość skromna, ale można wrzucić dowolne pliki cadowskie). Przykład - PCB do sudoku na AVR - po wrzuceniu nie wykryło poprawnie przycisków:




Na szczęście były w bazie modeli i po kilku kliknięciach wygląda to już tak:

Myślę, że fajnie zobaczyć swoją płytkę w 3D przed jej produkcją :)


niedziela, 5 czerwca 2016

Raspberry Pi i ILI9341



Dzisiaj chciałbym przedstawić jak uruchomić wyświetlacz ze sterownikiem ILI9341 na Raspberry Pi. Powstało to pod wpływem artykułu z Majsterkowa: link – stwierdziłem, że to mega prosta sprawa i w 5 krokach uda się to zrobić… w 5 krokach… po 5 godzinach, kilku instalacji systemu w końcu udało się to ładnie zrobić.

 

Postanowiłem więc napisać swoją wersję tego poradnika. Dla 100% pewności wszystko zostało powtórzone na czystej wersji systemu, ponieważ autor zapewne miał już na systemie zrobione kilka rzeczy, które są niezbędne do odpalenia wyświetlacza, a nie był tego świadomy. Szczerze już zdążyłem się przyzwyczaić, że większość poradników nie działa na 100% i trzeba korzystać z kilku jednocześnie. Więc do działa!


sobota, 28 maja 2016

Programowanie "gołych" atmeg8 itp w arduino IDE 1.6

Chciałem ostatnio przetestować mały projekcik na atmegę8a wykorzystując arduinoIDE i programator USBasp. Zawsze wystarczyło dodać kilka linijek do pliku boards.h i wszystko śmigało. Okazało się, że w wersji 1.6 i powyżej już średnio to działa ponieważ pojawia się problem z brakiem definicji 'upload.tool' po wielu wygooglowanych hasłach w końcu znalazłem rozwiązanie, które niestety nie jest specjalnie znane, a jest o wiele fajniejsze.
Wykorzystujemy tu możliwość automatycznego dodawania platform do arduinoIDE które znajduje się w File->preferences (Plik->Preferencje). Możemy tam podać dodatkowe adresy z których mają być pobierane ustawienia do nowych płytek. W ten sposób dodawałem zawsze tam ESP8266. Teraz możemy dodać różne rodzaje atmeg. Wszystko jest dokładniej opisane tutaj: https://github.com/sleemanj/optiboot . Czemu napisałem, że jest to fajniejsza metoda niż kiedyś - wtedy każda wersja taktowania była jako "odrębna" płytka. Teraz mamy dostęp do menu ustawień:




Może ten wpis oszczędzi komuś szukania :)