Хитрости усадки

17 February 2013

Концепт веток для индикаторного дерева успел изменится раза четыре :) По началу думал, что вполне сойдут rgb-светодиоды, и можно сделать красивые цветные переходы при изменении состояний проектов. Как бы не так. Для этого нужна динамическая индикация, которая бы требовала транзисторную часть, более высокое напряжение, и теряла бы яркость при наращивании. Позже, потеряв надежду в переливы, нашлись удобные двухцветные светодиоды. Дерево начало представляться из белых проводов со светодиодами на окончании. Ок. Но эта конструкция сама по себе стоять не сможет, провода то мягкие.

Для устойчивой конструкции нужен каркас. Либо толстые гнущиеся провода, либо опора. Накупил значит проволоки двух размеров, на проверить. Вариант оплетания веток проволокой снаружи показался не эстетическим. Так что решил вместо лишних жил пустить проволоку внутри кабеля ;) Вроде бы получилось! Первые варианты веток и модуля со сдвиговыми регистрами на фото снизу ;)

Сдвиговые регистры, кстати, крайне удобная штука. Наращиваемые, управляемые, компактные, да и вообще классные. В данном случаи использовал популярную модуль - 74HC595.

Рубин 0.1

03 February 2013

Да, а до оживления портов ввода-вывода на ruby я, оказывается, вчера был крайне не далеко. На сайте разработчика библиотеки нашлась красивая табличка с портами и их нумерацией. Которая в свою очередь оправдала полный разброс оных по линейке контактов..

Получилось весьма лаконично.

#!/usr/bin/ruby
MY_PIN = 4
require 'wiringpi'
print "[init]\n"
io = WiringPi::GPIO.new
io.mode(MY_PIN, OUTPUT)
10.times do
  print "[+  on]\n"
  io.write(MY_PIN, HIGH)
  sleep(1)
  print "[- off]\n"
  io.write(MY_PIN, LOW)
  sleep(1)
end
print "[end]\n";

И чуток доколдовав с кодом, решил запилить мигалку посищений сайта. Что может быть проще. Зато приятно сидеть за компьютером и наблюдать дружественные помигивания, значит кто-то тут даже бывает :D


#!/usr/bin/ruby
require 'wiringpi'

MY_PIN = 4

def blink(io, long)
  io.write(MY_PIN, HIGH)
  if long
    sleep(0.5)
  else
    sleep(0.1)
  end
  io.write(MY_PIN, LOW)
  sleep(0.1)
end

def getViews()
  return `wc -l /var/log/nginx/access.log`.to_i
end

puts "[web blinker init]"
io = WiringPi::GPIO.new
io.mode(MY_PIN, OUTPUT)
io.write(MY_PIN, LOW)
lcwas = getViews()
while true
  lc = getViews()
  if lc > lcwas
    dif = lc - lcwas
    print dif
    dif.times do
      blink(io, dif < 10)
    end
  end
  lcwas = lc
  print '.'
  sleep(1)
end

Общительная ягода

02 February 2013

Проект индикаторного дерева чуток задерживается. Сложно оказалось это дело собрать красиво. Термоусадка садится криво, провода с буквами, изоляция торчит -_- Так что пока взялся за ягоду.

Буквально сегодня запилили отверстие в корпусе под шлейф для портов ввода-вывода. Сразу попробовал засветить светодиодом, а там оказалась полная путаница с портами и их нумерацией.. Таблицы для первой ревизии, таблицы для второй ревизии, таблицы самого чипа и его портов.. да в добавок и в разных языках программирования цифры чуток различаются.

И вот последняя ссылка из списка вроде бы дает лучи надежды. Причем взгляд первым делом конечно пал на схему.. А потом взглянул на заголовок. Ухты. Кембридж :) В продвинутых университетах уже во всю изучают это дело!

Никак не хотел раньше изучать python, но по работе пришлось, а теперь и в этой ситуации помог. Библиотека на ruby использует какие-то другие привязки портов, может потом разберусь. Вот собственно самый примитивный код для мигания. Заодно проверю подсветку синтаксиса.

#!/usr/bin/python
import time
import RPi.GPIO as GPIO
print '[init]'
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
print '[start]'
for x in [1,2,3]:
        print '[+  on]'
        GPIO.output(3, True)
        time.sleep(1)
        print '[- off]'
        GPIO.output(3, False)
        time.sleep(1)
print '[end]'

Вкусная ягода

20 January 2013

Программирование - вообще скучная штука. Но даже в нем, оказывается, можно извлечь радость. Она наступает когда видишь олицетворение твоей программы, её работу и живое применение. Добиться этого голыми программами весьма сложно, зато оказывается можно это дело весьма хорошо наблюдать и добавится в электронике! Помнится я как-то давно писал про эксперименты с Atmel микроконтроллерами. Ох тогда щастья полные штаны были от простых двух мигающих светодиодов.

Но время не стоит на месте. С голыми микроконтроллерами не сложилось из-за слабой мат.части, решил изучить чуть более простые решения. В частности нынче мэнстримовые направления - Arduino и Raspberry Pi. Arduino представляет собой очень удобную оболочку для разработки под Atmel Mega8/168/328 микроконтроллеры. Удобные выводы портов, все документировано, расписано и тонны рабочих примеров. Одно удовольствие. Ниже можно увидеть альфа версию ламповых часиков с сердцем в виде atmega8, зашитой прошивкой Arduino. Надеюсь в скором времени допилю им корпус, а потом и вообще плату переделаю на печатную.

Raspberry Pi - полноценный компьютер за 35$. Дома стояла задача создать сетевое хранилище. Но беда, все эти пафосные NAS сервера стоят весьма внушительных денег. Почти решился взять "сетевой карман", расшаривающий винт по сети, но нашел это чудо. Оно успешно справилось с поставленными задачами, и оказывается способно куда на большее! Народ по всему миру начал из нее создавать все что ни придумать, от игровых автоматов и метеостанций, до бортового компьютера роботов.

И, возвращаясь к теме получения радости от программирования - писать код, который выполняет реальные действия - классно! Надо придумать как можно это всё объеденить..


© Oleksiy Tishyn 2018