Память в Ардуино.

Тема в разделе "Arduino & Shields", создана пользователем AlexSasha, 1 сен 2012.

  1. AlexSasha

    AlexSasha Нерд

    Я тотальный нуб в ардуино и схемотехнике, поэтому такой вопрос:
    Как я понимаю, обычно обрабатывается сигнал с сенсора и происходят, в зависимости от этого, действия. Мне нужно, что бы действия произошли не просто из-за сигнала, а в зависимости от последовательности сигналов. То есть запоминать и считать импуты, например, 5 импутов подряд, и оутпут получаем в зависимости от того какие значения принимали импуты.
    Напоминаю опять, я очень новенький в этом всем, так что не знаю, можно ли программно следить за значениями и количеством, (например, заносить в массив значения + вести счет) и на нужном счете обнулить массив и собственно каунтер. Или так не получится и нужно какие-то более низкоуровневые механизмы использовать. Просветите.

    И да, опыт программирования есть.
    Извините за туманную формулировку и обрусированные английские слова(не придумал сходу как по другому).
     
  2. <Lame>

    <Lame> Гик

    Я кажется понял, в след. сообщении напишу код и описание :)
     
  3. <Lame>

    <Lame> Гик

    PHP:

    #define ADC_PIN A0;
    int i;
    int val;
    char SENSOR_VALUE;
    int VALUE;
    void valuemaker() {
    begin:
    SENSOR_VALUE[i] = analogRead(ADC_PIN);
    i++;
    if (i => 5) {
    VALUE = (SENSOR_VALUE[0] + SENSOR_VALUE[1] + SENSOR_VALUE[2] + SENSOR_VALUE[3] + SENSOR_VALUE[4] / 5);
    }
    goto begin;
    }
    void.setup() {
    Serial.begin(9600);
    }
    void.loop() {
    while (val <5) {
    delay(10);
    valuemaker();
    val++;
    }
    Serial.print("Value = ");
    Serial.println(VALUE);
    VALUE = 0;
    i = 0;
    val = 0;
    }
     
    Конечно кривовато чуток, но писал на скорую руку, надеюсь будет работать :D
    Я вообще любитель написать такую программу, которую только я пойму :cool:
     
    AlexSasha нравится это.
  4. AlexSasha

    AlexSasha Нерд

    Спасибо, выглядит как то что нужно!:)

    И теперь нужно после достижения 5ти и выведения (print) обнулить показатели, т.к. работа не заканчивается, мне нужны следующие суммы значений. Но это, кажется, не сложно уже сделать, так?

    Еще раз спасибо, думал уже нырять очень глубоко, что б сделать, но все намноого проще!
     
    <Lame> нравится это.
  5. <Lame>

    <Lame> Гик

    Ой :rolleyes: забыл про обнуление, щас обновлю код :)
     
  6. AlexSasha

    AlexSasha Нерд

    Большое спасибо, разъяснили! Если получится, что задумал, отпишусь. Но ооочень не скоро)
     
  7. <Lame>

    <Lame> Гик

    ИЗВИНЯЮСЬ :oops: код неверный, работать не будет, в чём проблема - не понимаю. лучше сами код напишите, если поняли, как это делается:)
     
  8. AlexSasha

    AlexSasha Нерд

    Код не пробовал, волнует вопрос сохранения предыдущих импутов.

    Посмотрел по тщательней, есть несколько проблем:
    • неиспользуемая переменная kolichestvo
    • SENSOR_VALUE объявляете как int, а потом используете как массив. Так можно в processing?
    • задаете переменную var, но нигде не используете, потому что опечатались, как я понимаю, на val (Val и val одно и то же?)
    Ну это без проверки логики.
     
  9. <Lame>

    <Lame> Гик

    val и Val - это разное, а код я писал на iPad'е, на скорую руку, без вожможности проверки правильности, и параллельно смотрел телик;)
     
  10. <Lame>

    <Lame> Гик

    Предыдущие импуты просто в переменные надо сохранять.
     
  11. <Lame>

    <Lame> Гик

    Ну, я вроде отредактировал сообщение с кодом ещё чутка, но не получается всё равно. Выдаёт ошибку:
    Код (Text):

    sketch_sep03a.cpp: In function 'void valuemaker()':
    sketch_sep03a:7: error: invalid types 'char[int]' for array subscript
    sketch_sep03a:7: error: expected `)' before ';' token
    sketch_sep03a:7: error: expected primary-expression before ')' token
    sketch_sep03a:7: error: expected `;' before ')' token
    sketch_sep03a:9: error: expected primary-expression before '>' token
    sketch_sep03a:10: error: invalid types 'char[int]' for array subscript
    sketch_sep03a:10: error: invalid types 'char[int]' for array subscript
    sketch_sep03a:10: error: invalid types 'char[int]' for array subscript
    sketch_sep03a:10: error: invalid types 'char[int]' for array subscript
    sketch_sep03a:10: error: invalid types 'char[int]' for array subscript
    sketch_sep03a.cpp: At global scope:
    sketch_sep03a:14: error: expected unqualified-id before '.' token
    sketch_sep03a:17: error: expected unqualified-id before '.' token
     
    Да мне щас некогда разбираться со всем этим. дел по горло.
    Да и возможности проверить всё это на дуне нету, она на даче осталась, а я в Москве :( Потом проверю.
     
  12. Код (Text):

     
     
    int i;
    int val;
    char* SENSOR_VALUE;
    //
    int VALUE;
    void valuemaker() {
    begin:
    SENSOR_VALUE[i] = analogRead(A0);
    i++;
    if (i >= 5) {
    VALUE = (SENSOR_VALUE[0] + SENSOR_VALUE[1] + SENSOR_VALUE[2] + SENSOR_VALUE[3] + SENSOR_VALUE[4] / 5);
    }
    goto begin;
    }
    void setup() {
    // void setup пишется раздельно и без точек
    Serial.begin(9600);
    }
    void loop() {
    // void loop пишется раздельно и без точек
    while (val < 5) {
    delay(10);
    valuemaker();
    val++;
    }
    Serial.print("Value = ");
    Serial.println(VALUE);
    VALUE = 0;
    i = 0;
    val = 0;
    }
     
    }
    Долго мучился! Код работающий!
     
  13. UPD: Извиняюсь, первый комментарий не нужен.
     
  14. AlexSasha

    AlexSasha Нерд

    Спасибо всем, буду пробовать!