Pull to refresh

Fez Panda 2 чтение IButton

Reading time 3 min
Views 12K
Добрый день.
Извиняюсь если не в тот топик поместил, но вроде показался этот подходящим, да и кармы для других не хватает.
Давненько приобрел для себя Fez Panda 2 (заказывал на dfrobot)
Название
Модель
Цена
2A Dual Motor Controller
DRI0002
$17.00
FEZ Panda II- A .NET Micro Framework Controller
DFR0142
$39.90
Bluetooth Bee
TEL0023
$26.00
IO Expansion Shield For Arduino(V5)
DFR0088
$18.00
HKBRAM — без страховки (вес 235.00 г):
$7.00
Итого:
$107.90

Побаловался и забросил. Вчера вечером попался сей девайс на глаза, а рядом ключи с «таблеткой» от домофона. Вот и решил попробовать считать данные из него. Работает он по интерфейсу 1-Wire (который согласно описанию панды «available on any IO»)

Расписывать его работу не буду, кому интересно можно прочесть здесь
Для работы нам понадобится спаять/скрутить вот такую схемку:

подтягивающий резистор



пруф

Код приложения выглядит так:
using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

using GHIElectronics.NETMF.FEZ;
using GHIElectronics.NETMF.Hardware;

namespace iButton
{
  public class Program
  {
    static OneWire ow = new OneWire((Cpu.Pin)FEZ_Pin.Digital.Di4);
    static OutputPort led = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.LED, false);

    public static void Main()
    {
      bool ledState = false;

      while (true)
      {
        byte[] readall = new byte[8];

        if (ow.Search_GetNextDevice(readall))
        {
          string hex = ByteArrayToString(readall);
          Debug.Print("========================");
          if (readall[0] != 0x01)
          {
            Debug.Print("Device is not a DS1990A family device.");
          }
          Debug.Print(hex);

          for (int i = 0; i < 6; i++)
          {
            Thread.Sleep(200);
            ledState = !ledState;
            led.Write(ledState);
          }
        }
      }
    }

    public static string ByteArrayToString(byte[] ba)
    {
      string hex = string.Empty;
      for (int i = ba.Length - 1; i >= 0; i--)
      {
        hex += " " + ByteToHex(ba[i]);
      }

      return hex;
    }

    public static string ByteToHex(byte b)
    {
      const string hex = "0123456789ABCDEF";
      int lowNibble = b & 0x0F;
      int highNibble = (b & 0x0F0) >> 4;
      string s = new string(new char[] { hex[highNibble], hex[lowNibble] });

      return s;
    }
  }
}

* This source code was highlighted with Source Code Highlighter.



Если в ближайшее время куплю пустой ключ то попробую его запрограммировать имеющимися данными.
Tags:
Hubs:
+15
Comments 26
Comments Comments 26

Articles