Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Raspberry Pi
  3. Raspberry PI пуск по кнопке C++

Raspberry PI пуск по кнопке C++

Запланировано Прикреплена Закрыта Перенесена Raspberry Pi
1 Сообщения 1 Posters 19 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано
    #1

    Всем доброго времени суток!
    Озадачился такой проблемой: надо записывать длительность состояния датчика (на данный момент кнопка) в сработанном состоянии. Если с таймером разобрался и условия пуска остановки есть, то ожидание заставить ждать программу не могу или в бесконечном цикле вывода «нажмите кнопку» или просто заканчивает после вывода «нажмите кнопку».
    Привожу вариант с бесконечным выводом «нажмите кнопку»:
    ]#include <bcm2835.h>
    #include <time.h>
    #include <sys/time.h>
    #include <sys/times.h>
    #include <iostream>
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <math.h>

    #define PIN RPI_V2_GPIO_P1_12 // Для RPi версии 2 дентификатор PIN меняем на конкретный идентификатор (в данном случае RPI_V2_GPIO_P1_12)
    #define PIN_IN RPI_V2_GPIO_P1_16 //

    //Описание счётчика времени//
    long mtime() {
    struct timespec t1;

    clock_gettime(CLOCK_MONOTONIC_RAW, &t1); //часы с постоянно увеличивающимся счётчиком, не подвержен изменению через NTP
    long mt = (long)t1.tv_sec * 1000000 + t1.tv_nsec / 1000;
    return mt;
    }

    long ctime() {
    struct timespec t2;

    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t2);//возвращение времени затраченного процессором относительно данного приложения в независимости от других задач
    long ct = (long)t2.tv_sec * 1000000 + t2.tv_nsec / 1000;
    return ct;
    }

    using namespace std;

    int i;

    int main ()
    {
    long t,t1,t2;

    if (!bcm2835_init()) //инизиализация GPIO
    return 1; //завершение программы, если инизиализация не удалась

    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP); //установка порта P1_12 на вывод
    bcm2835_gpio_fsel(PIN_IN, BCM2835_GPIO_FSEL_INPT); //установка порта на вход

    do { printf("нажмите кнопку\n");
    if(bcm2835_gpio_lev(PIN_IN)) break;
    }
    while (!bcm2835_gpio_lev(PIN_IN));

    if (bcm2835_gpio_lev(PIN_IN))
    {i == 1;
    t1 = mtime();
    t2 = ctime();}

    while (1)
    {
    while (i=1)
    {
    bcm2835_gpio_write(PIN, LOW); //при значении порта 0 диод горит
    bcm2835_delay(50); //выдержка времени заданная в миллесикундах
    bcm2835_gpio_write(PIN, HIGH); //при значении не горит
    bcm2835_delay(70);

      if(!bcm2835_gpio_lev(PIN_IN), i = 1)
                {
                  t1 = mtime() - t1; //вычисление затраченного време
                  t2 = ctime() - t2;
                  t = t1 - t2;
                  cout &lt;&lt; &quot;Время выполнения микроcекунд: &quot; &lt;&lt; t &lt;&lt; endl;
                  printf(&quot;time: %ld microseconds\n&quot;,t);
        }
                  i == 0;
                  return 0;
          //}
       }
     }
    

    return 0;
    }

    Подскажите пожалуйста, как заставить ждать нажатия кнопки после единственного вывода «нажмите кнопку»?

    За ранее благодарю!

    1 ответ Последний ответ
    0

    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Login or register to search.
    • Первое сообщение
      Последнее сообщение
    0
    • Категории
    • Главная
    • Документация
    • Последние
    • Пользователи