Нужна помощь с модулем WT588D-U

jurafuxman
Offline
Зарегистрирован: 25.07.2014

друзья программеры, я в этом новичёк. как мне заставить ардуину проигровать определенный фаил из прошитых в модуль WT588D-U без использования кнопок.? например при считывании данных с ультрозвукового сенсора(HC-SR04), когда расстояние ну к примеру 30 см проигровается один wav,  а когда 20 см проигровается другой. принцип работы я понимаю, проигрывать надо из определенного адреса группы,а вот как это реализовать програмно? буду рад любой помощи.

DieseL.cfg
Offline
Зарегистрирован: 03.07.2014

#include "Ultrasonic.h"

Объяви сенсор

Ultrasonic sensorOne(A1, A0);
// Trig - A1, Echo - A0
 
Затем
if(sensorOne.Ranging(CM) = 30) функция;
if(sensorOne.Ranging(CM) = 20) функция;
 
этот пример грубоват, но суть должна быть ясна
jurafuxman
Offline
Зарегистрирован: 25.07.2014

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

leshak
Offline
Зарегистрирован: 29.09.2011

DieseL.cfg пишет:

if(sensorOne.Ranging(CM) = 30) функция;

if(sensorOne.Ranging(CM) = 20) функция;
 

Даже в "псевдо-коде", таких ошибок лучше избегать.  
Перечитываем: = (assignment) и == - иначе потом горя не оберетесь.

 

DieseL.cfg
Offline
Зарегистрирован: 03.07.2014

leshak пишет:

DieseL.cfg пишет:

if(sensorOne.Ranging(CM) = 30) функция;

if(sensorOne.Ranging(CM) = 20) функция;
 

Даже в "псевдо-коде", таких ошибок лучше избегать.  
Перечитываем: = (assignment) и == - иначе потом горя не оберетесь.

 

на этот раз просто опечатался)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Поэтому при сравнения сначала пишут константу, например:
if( 30 == foo() )
тогда компилятор выругается

jurafuxman
Offline
Зарегистрирован: 25.07.2014

А мне я так понимаю некто непоможет? :(

Leshiy
Offline
Зарегистрирован: 19.07.2014

А в первом ответе вы что видите? Если нагромождение непонятных буковок и циферок, то да, никто не поможет.

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

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

А в первом ответе вы что видите? Если нагромождение непонятных буковок и циферок, то да, никто не поможет.

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

Все дело в том что в datasheet есть небольшой пример, но он на ASMe и на С кажется а в програмирование я почти ноль. я вот собрал ультрозвуковой дальномер, скеч проблем не составил, полный интернет,залил в дуину и все ок. а вот к этому модулю немогу найти хотябы самый простой код. типа выбираем фаил-проигрываем, берем друго-проигрываем ну и т.д.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гыыы. А от нас то вам что нужно? Что бы все бросились писать библиотеку для только вам известного модуля? Нам тут типа заняться больше нечем? Там внизу есть ищю исполнителя.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Ну тогда начните хотя бы с того, что предоставьте ссылки на документацию по модулю. Я бы и сам нашёл, но мне лень. :)

И ещё - я так понял, что вы заставили этот модуль играть С КНОПКАМИ, так? Каким образом вы это сделали?

 

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Puhlyaviy пишет:
Гыыы. А от нас то вам что нужно? Что бы все бросились писать библиотеку для только вам известного модуля? Нам тут типа заняться больше нечем? Там внизу есть ищю исполнителя.

 

ну почему только мне извесного? и как я понял ему не нужна какаято особая библиотека. просто по одноканальной шине данных надо передать какой-то адрес. вот тут http://electromost.com/news/ustrojstvo_upravlenija_i_kontrolja_po_gsm_versija_1_6/2013-04-10-87 как бы описано но не под ардуину.

jurafuxman
Offline
Зарегистрирован: 25.07.2014
Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Ну так передавайте адрес по одноканальной шине. В чем помощь то нужна?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Как? то есть  какой код я должен добавить в скеч что-бы передать нужный адрес музыкального фрагмента. Вот этого я не знаю. мне-бы небольшой образец хотя-бы типа (write.pin 5 address) ну или как там правельно его написать ну или типа того. я не програмист(к сожалению).

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Там внизу раздел ищю исполнителя.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Вам однопроводное управление нужно, или можно по пяти проводам?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

Вам однопроводное управление нужно, или можно по пяти проводам?

однопроводное у меня arduino nano  дефицит пинов.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Когда вы этот модуль к компу по USB подключаете, оно видится как COM-порт?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

Когда вы этот модуль к компу по USB подключаете, оно видится как COM-порт?

да кажется. там програмка в комплекте была. файлы я без проблем могу залить. кнопочное управление прекрасно работает, а вот с ардуиной ...

Leshiy
Offline
Зарегистрирован: 19.07.2014

Ну вот залейте в чип пару-тройку звуков, откройте программку, найдите там монитор COM-порта и просто в строке для ввода данных напишите 0. Затем нажмите кнопку Send. По идее должен заиграть 0 звуковой файл. Если заслать 1, то первый итд.
По однопроводной  линии управляют дёргая уровнями НА ЛЮБОЙ, по вкусу, ножке ардуино, с определёнными интервалами. Проще говоря, вам надо менять уровни на ножке с паузами между изменениями.

Сначала на ножке, подключенной к oneline входу модуля, вы ставите уровень LOW на 5 миллисекунд, не меньше, не больше, это стартовый импульс, который говорит модулю - ща будет адрес аудиофайла.
Затем вот так:

0 это HIGH на 300 микросекунд, потом LOW на 600 микросекунд
1 это HIGH на 600 микросекунд, потом LOW на 300 микросекунд

надо передать 8 импульсов, по количеству бит в байте, модуль их соберёт в кучку и получит номер файла, который надо проиграть.

Допустим нам надо проиграть 1 аудиофайл, его номер в двоичном коде - 00000001, значит ножкой дёргаем так:
LOW на 5 миллисекунд // указываем модулю начать приём данных
бит 7) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 6) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 5) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 4) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 3) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 2) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 1) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 0) HIGH на 600 микросекунд, потом LOW на 300 микросекунд

И вот тут, если я, блин, всё правильно понял, у вас заиграет муза, записанная в модуле, в "ячейке" с адресом 1.

 

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

Ну вот залейте в чип пару-тройку звуков, откройте программку, найдите там монитор COM-порта и просто в строке для ввода данных напишите 0. Затем нажмите кнопку Send. По идее должен заиграть 0 звуковой файл. Если заслать 1, то первый итд.
По однопроводной  линии управляют дёргая уровнями НА ЛЮБОЙ, по вкусу, ножке ардуино, с определёнными интервалами. Проще говоря, вам надо менять уровни на ножке с паузами между изменениями.

Сначала на ножке, подключенной к oneline входу модуля, вы ставите уровень LOW на 5 миллисекунд, не меньше, не больше, это стартовый импульс, который говорит модулю - ща будет адрес аудиофайла.
Затем вот так:

0 это HIGH на 300 микросекунд, потом LOW на 600 микросекунд
1 это HIGH на 600 микросекунд, потом LOW на 300 микросекунд

надо передать 8 импульсов, по количеству бит в байте, модуль их соберёт в кучку и получит номер файла, который надо проиграть.

Допустим нам надо проиграть 1 аудиофайл, его номер в двоичном коде - 00000001, значит ножкой дёргаем так:
LOW на 5 миллисекунд // указываем модулю начать приём данных
бит 7) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 6) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 5) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 4) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 3) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 2) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 1) HIGH на 300 микросекунд, потом LOW на 600 микросекунд
бит 0) HIGH на 600 микросекунд, потом LOW на 300 микросекунд

И вот тут, если я, блин, всё правильно понял, у вас заиграет муза, записанная в модуле, в "ячейке" с адресом 1.

спасибо,буду пробовать. да кстати нарыл вот http://compcar.ru/forum/showthread.php?t=10333 но этот код почему-то  незаработал:(

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гы я даже больше скажу. То что он описал тоже не заработает :)

Leshiy
Offline
Зарегистрирован: 19.07.2014

Ну вот, а я даташит читал... А тут даже код наличествует. Собсно в коде всё то, что я вам буквицами расписал, и есть.

Вообще странноватая однопроводная шина, по даташиту надо ещё ресет к земле придавливать, перед передачей команды, я про это писать не стал, так как решил, что там просто указано минимальное время, которое должно пройти после ресета до начала передачи команды, а не обязаловка давить ресет перед передачей, иначе линия была бы уже стопудово двухпроводной.

Весь код тестовый у вас будет состоять из:

DigitalWrite(oneline, HIGH);
delayMicroseconds(задержка);
DigitalWrite(oneline, LOW);
delayMicroseconds(задержка);

Не надо ничего пока пихать в циклы итд, пишите в столбик:
Уровень
Задержка
Уровень
Задержка
итд.

Как добъётесь работоспособности и впитаете принцип работы - наворачивайте код циклами, проверками, хоть чёртом лысым. Но сначала так, в столбик.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Puhlyaviy пишет:
Гы я даже больше скажу. То что он описал тоже не заработает :)

Ну и лана. Я там порядок бит перепутал, или где?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

Ну вот, а я даташит читал... А тут даже код наличествует. Собсно в коде всё то, что я вам буквицами расписал, и есть.

Вообще странноватая однопроводная шина, по даташиту надо ещё ресет к земле придавливать, перед передачей команды, я про это писать не стал, так как решил, что там просто указано минимальное время, которое должно пройти после ресета до начала передачи команды, а не обязаловка давить ресет перед передачей, иначе линия была бы уже стопудово двухпроводной.

Весь код тестовый у вас будет состоять из:

DigitalWrite(oneline, HIGH);
delayMicroseconds(задержка);
DigitalWrite(oneline, LOW);
delayMicroseconds(задержка);

Не надо ничего пока пихать в циклы итд, пишите в столбик:
Уровень
Задержка
Уровень
Задержка
итд.

Как добъётесь работоспособности и впитаете принцип работы - наворачивайте код циклами, проверками, хоть чёртом лысым. Но сначала так, в столбик.

Большое спасибо за помощь, будем учится и впитывать прицыпы.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Leshiy пишет:

Puhlyaviy пишет:
Гы я даже больше скажу. То что он описал тоже не заработает :)

Ну и лана. Я там порядок бит перепутал, или где?


Ресет это важно для начала передачи.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Нууу... Видно будет. Называть OneLine'ом режим работы, который требует 2 линии... Хотя там китайцы, они могут.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Leshiy пишет:

Нууу... Видно будет. Называть OneLine'ом режим работы, который требует 2 линии... Хотя там китайцы, они могут.


Мдааа. А видимо 1wire вам видится как проволка а второй конец втыкается в горшок с геранью? Ну типа земля же.

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Все заработало! вот отсюда http://compcar.ru/forum/showthread.php?t=10333. надо было только пины переназначить. Есче раз спасибо за помощь.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Puhlyaviy пишет:
Leshiy пишет:

Нууу... Видно будет. Называть OneLine'ом режим работы, который требует 2 линии... Хотя там китайцы, они могут.

Мдааа. А видимо 1wire вам видится как проволка а второй конец втыкается в горшок с геранью? Ну типа земля же.

Мдааа, ну уж до такого уровня тупости не надо меня опускать, лады, бро, да?

Ground by design, поэтому вообще не рассматривается. OneLine - Data+Ground, but China people think different, China OneLine is Reset+Data+Ground.

Но это ещё надо проверить.

Leshiy
Offline
Зарегистрирован: 19.07.2014

jurafuxman пишет:

Все заработало! вот отсюда http://compcar.ru/forum/showthread.php?t=10333. надо было только пины переназначить. Есче раз спасибо за помощь.

Круто! Не уходи далеко, ща мы тебя терзать будем. Один вопрос есть.

jurafuxman
Offline
Зарегистрирован: 25.07.2014

невопрос. че за вопрос? 

 

Leshiy
Offline
Зарегистрирован: 19.07.2014
#define RES 14
#define IO 5
byte i=0;
byte a=0;

void setup(void)
{
  pinMode(RES,OUTPUT);
  pinMode(IO,OUTPUT);
  digitalWrite(RES,HIGH);
  digitalWrite(IO,HIGH);
  Serial.begin(9600);
  //wt_com(3); 
}

void loop (void)
{
  if(Serial.available()!=0)
  {
    a=Serial.read();
    //Serial.write(a);
    wt_com(a);
  }
}

void wt_com(byte adr)
{
  digitalWrite(IO,LOW);
  delay(5);
  for(i=0;i<8;i++)
  { 
    digitalWrite(IO,HIGH);
    if(bitRead(adr,i))
    { 
      delayMicroseconds(600);
      digitalWrite(IO,LOW);
      delayMicroseconds(300);
    }
    else 
    {
      delayMicroseconds(300);
      digitalWrite(IO,LOW);
      delayMicroseconds(600);
    }
  }
  digitalWrite(IO,HIGH);
}  

 

Возьми этот код, замени пины на свои и запусти. Заработает, нет?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

пашет. но какой-то  треск,шум в начале и в конце звучания. типа как рация.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Там написал товарищ. Что без ресета работает. Но в дата есть ресет :)

Leshiy
Offline
Зарегистрирован: 19.07.2014

Puhlyaviy пишет:
Там написал товарищ. Что без ресета работает. Но в дата есть ресет :)

Мало ли кто что написал. Проверить надоть! Тем более возможность есть.

Значит треск-шум, а с ресетом без трескшума. Ну чо, кетайскей онелине о трёх проводах. Блджад, сериал о трёх проводах и онелине о трёх проводах. Моя щаслева!

jurafuxman
Offline
Зарегистрирован: 25.07.2014

ну у него там wt588d, а у меня wt588d-u с usb  может схематично как-то отличаются.

 

Leshiy
Offline
Зарегистрирован: 19.07.2014

jurafuxman пишет:

ну у него там wt588d, а у меня wt588d-u с usb  может схематично как-то отличаются.

Отличаются. Один программатор на борту тащит, а другому внешний надо, все отличия, скорее всего. Правда китайцы и схемы на лету менять могут, чо было под рукой, то и поставили. Схемку подправили и поставили. Чего добру-то пропадать?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

ну это они могут. у меня есть есче два модуля WTV020-SD-16P так они схемотично разные. чип одинаковый а обвес разный

Leshiy
Offline
Зарегистрирован: 19.07.2014

Самое главное, что цель достигнута, правда двумя ногами, вместо одной, но тоже результат.

jurafuxman
Offline
Зарегистрирован: 25.07.2014

это точно. подключил через DAC, повесил усилок. не винил конечно но звучит неплохо.

Leshiy
Offline
Зарегистрирован: 19.07.2014

jurafuxman пишет:

это точно. подключил через DAC, повесил усилок. не винил конечно но звучит неплохо.

Вот оно, счастье самоделкина!

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Leshiy пишет:

jurafuxman пишет:

это точно. подключил через DAC, повесил усилок. не винил конечно но звучит неплохо.

Вот оно, счастье самоделкина!


Такими темпами скоро в самоделкиных будут записывать каждого кто сможет колесо у машины поменять?

Leshiy
Offline
Зарегистрирован: 19.07.2014

Puhlyaviy пишет:
Leshiy пишет:

jurafuxman пишет:

это точно. подключил через DAC, повесил усилок. не винил конечно но звучит неплохо.

Вот оно, счастье самоделкина!

Такими темпами скоро в самоделкиных будут записывать каждого кто сможет колесо у машины поменять?

Старость настигла внезапно? Что за вечное занудство с нотками превосходства, вы что тут, поголовно забыли, как радоваться?

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Leshiy пишет:

Puhlyaviy пишет:
Leshiy пишет:

jurafuxman пишет:

это точно. подключил через DAC, повесил усилок. не винил конечно но звучит неплохо.

Вот оно, счастье самоделкина!

Такими темпами скоро в самоделкиных будут записывать каждого кто сможет колесо у машины поменять?

Старость настигла внезапно? Что за вечное занудство с нотками превосходства, вы что тут, поголовно забыли, как радоваться?

Согласен с предыдущим оратором. :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Leshiy пишет:

Старость настигла внезапно? Что за вечное занудство с нотками превосходства, вы что тут, поголовно забыли, как радоваться?


Чему радоваться? Он же так и не понял почему и как. Это не самоделкин, это самогуглин какой то.
И скучно и грустно и некому руку пожать.

jurafuxman
Offline
Зарегистрирован: 25.07.2014

Puhlyaviy пишет:
Leshiy пишет:

Старость настигла внезапно? Что за вечное занудство с нотками превосходства, вы что тут, поголовно забыли, как радоваться?

Чему радоваться? Он же так и не понял почему и как. Это не самоделкин, это самогуглин какой то. И скучно и грустно и некому руку пожать.

А ты наверное в детском садике на ноль делить научился.

c911
Offline
Зарегистрирован: 17.02.2015

Приветствую!

Коллеги помогите начинающему, я уже на грани .-)))

Выложите плиз вашу, рабочую откомпилированную прошивку wt588d
и если можно схему подключения, а-то я уже голову сломал.
А может просто советом поможете. Что я делаю не так?

Прошиваю в wt588d несколько файлов.
 
Настройки выставляю следующие:
- ControlMode -> One Line
- Sound output -> PWM
- Busy mode -> LOW
- Ставлю галку Pull High Register
 
Плата Arduino Nano? модуль подключаю 6ю проводами:
-динамик в 3,4
-Reset 1 -> Arduino 14 (A0)
-IO 10 -> Arduino 5
-VDD 16 -> Arduino +5
-GND 8 -> Arduino GND
 
Заливаю скетч, указаный выше. 
 
... и молчание, что не так? Спасите, всю голову сломал.
jurafuxman
Offline
Зарегистрирован: 25.07.2014

c911 пишет:

Приветствую!

Коллеги помогите начинающему, я уже на грани .-)))

Выложите плиз вашу, рабочую откомпилированную прошивку wt588d
и если можно схему подключения, а-то я уже голову сломал.
А может просто советом поможете. Что я делаю не так?

Прошиваю в wt588d несколько файлов.
 
Настройки выставляю следующие:
- ControlMode -> One Line
- Sound output -> PWM
- Busy mode -> LOW
- Ставлю галку Pull High Register
 
Плата Arduino Nano? модуль подключаю 6ю проводами:
-динамик в 3,4
-Reset 1 -> Arduino 14 (A0)
-IO 10 -> Arduino 5
-VDD 16 -> Arduino +5
-GND 8 -> Arduino GND
 
Заливаю скетч, указаный выше. 
 
... и молчание, что не так? Спасите, всю голову сломал.

Вот этот скеч у меня нормально работает, но я использую МЕГУ. Но я использовал серву- типа серва налево, ну и голосовая озвучка.

#include <Servo.h> 
 
Servo myservo;
 
#define RES 30 
#define IO 31 
byte i=0; 
byte a=0; 
 
void setup(void) 
  pinMode(RES,OUTPUT); 
  pinMode(IO,OUTPUT); 
  digitalWrite(RES,HIGH); 
  digitalWrite(IO,HIGH); 
  Serial.begin(9600); 
  myservo.attach(9);
  myservo.write(10);
  //wt_com(3);  
 
void loop (void) 
 
 
delay(100);
  wt_com(0); 
  delay(2000);  
  myservo.write(170);
  delay(1000);
  wt_com(1); 
  delay(2000);
  wt_com(2);
  delay(2000);
    myservo.write(10);
    delay(3000);
 
void wt_com(byte adr) 
  digitalWrite(RES,LOW); 
  delay(5); 
  digitalWrite(RES,HIGH); 
  delay(17); 
  digitalWrite(IO,LOW); 
  delay(5); 
  for(i=0;i<8;i++) 
  {  
    digitalWrite(IO,HIGH); 
    if(bitRead(adr,i)) 
    {  
      delayMicroseconds(600); 
      digitalWrite(IO,LOW); 
      delayMicroseconds(300); 
    } 
    else  
    { 
      delayMicroseconds(300); 
      digitalWrite(IO,LOW); 
      delayMicroseconds(600); 
    } 
  } 
  digitalWrite(IO,HIGH); 
}  
 
c911
Offline
Зарегистрирован: 17.02.2015

jurafuxman пишет:

c911 пишет:

Приветствую!

Коллеги помогите начинающему, я уже на грани .-)))

Выложите плиз вашу, рабочую откомпилированную прошивку wt588d
и если можно схему подключения, а-то я уже голову сломал.
А может просто советом поможете. Что я делаю не так?

Прошиваю в wt588d несколько файлов.
 
Настройки выставляю следующие:
- ControlMode -> One Line
- Sound output -> PWM
- Busy mode -> LOW
- Ставлю галку Pull High Register
 
Плата Arduino Nano? модуль подключаю 6ю проводами:
-динамик в 3,4
-Reset 1 -> Arduino 14 (A0)
-IO 10 -> Arduino 5
-VDD 16 -> Arduino +5
-GND 8 -> Arduino GND
 
Заливаю скетч, указаный выше. 
 
... и молчание, что не так? Спасите, всю голову сломал.

Вот этот скеч у меня нормально работает, но я использую МЕГУ. Но я использовал серву- типа серва налево, ну и голосовая озвучка.

#include <Servo.h> 
 
Servo myservo;
 
#define RES 30 
#define IO 31 
byte i=0; 
byte a=0; 
 
void setup(void) 
  pinMode(RES,OUTPUT); 
 
 ....
 
  digitalWrite(IO,HIGH); 
}  
 

А остальное подключение такое же, как у меня описано?