Скетч

Тема в разделе "Сделаю проект", создана пользователем Вопрос!, 20 дек 2014.

  1. Вопрос!

    Вопрос! Нуб

    Как сделать что-бы команды выполнялись последовательно с завершением? Я пишу команду и она выполняется без завершения. Вот код.:confused:

    #define LED_PIN1 11
    #define LED_PIN2 12
    #define LED_PIN3 13

    void setup()
    {
    pinMode(LED_PIN1, OUTPUT);
    pinMode(LED_PIN2, OUTPUT);
    pinMode(LED_PIN3, OUTPUT);
    }

    void loop()
    {
    analogWrite(LED_PIN1, 255);
    delay(60000);

    analogWrite(LED_PIN2, 255);
    delay(10000);

    analogWrite(LED_PIN3, 255);
    delay(60000);
    }
     
  2. Вопрос!

    Вопрос! Нуб

    Вобщем вопрос такой: как сделать паралельное выполнение команд?
     
  3. r0c

    r0c Гик

    Код (Text):
    #define LED_PIN1 11
    #define LED_PIN2 12
    #define LED_PIN3 13

    void setup()
    {
    pinMode(LED_PIN1, OUTPUT);
    pinMode(LED_PIN2, OUTPUT);
    pinMode(LED_PIN3, OUTPUT);


    analogWrite(LED_PIN1, 255);
    delay(60000);

    analogWrite(LED_PIN2, 255);
    delay(10000);

    analogWrite(LED_PIN3, 255);
    delay(60000);
    }

    void loop()
    {
    }
     
  4. Вопрос!

    Вопрос! Нуб

    мне надо что бы было как светофор
    они загораются, но не тухнут
     
  5. r0c

    r0c Гик

    #define LED_PIN1 11
    #define LED_PIN2 12
    #define LED_PIN3 13

    void setup()
    {
    pinMode(LED_PIN1, OUTPUT);
    pinMode(LED_PIN2, OUTPUT);
    pinMode(LED_PIN3, OUTPUT);


    analogWrite(LED_PIN1, 255);
    delay(60000);
    analogWrite(LED_PIN1, 1);
    analogWrite(LED_PIN2, 255);
    delay(10000);
    analogWrite(LED_PIN2, 1);
    analogWrite(LED_PIN3, 255);
    delay(60000);
    analogWrite(LED_PIN3, 1);
    }

    void loop()
    {
    }
     
  6. Вопрос!

    Вопрос! Нуб

    Спасибо, но всю движущую часть(analogWrite(LED_PIN1, 255);
    delay(60000);
    analogWrite(LED_PIN1, 1);
    analogWrite(LED_PIN2, 255);
    delay(10000);
    analogWrite(LED_PIN2, 1);
    analogWrite(LED_PIN3, 255);
    delay(60000);
    analogWrite(LED_PIN3, 1);) я переместил в "void loop" а то один раз как то не очень.:)
     
  7. Вопрос!

    Вопрос! Нуб

    Какой скетч что бы определять реальное время? Время записываем изначально, отображение на кристалическом экране.
     
  8. Вопрос!

    Вопрос! Нуб

    #define LED1_PIN 11
    #define LED2_PIN 10
    #define BUZZER_PIN 13
    #define MOTOR_PIN 8

    void setup()
    {
    pinMode(LED1_PIN, OUTPUT);
    pinMode(LED2_PIN, OUTPUT);
    pinMode(BUZZER_PIN, OUTPUT);
    pinMode(MOTOR_PIN, OUTPUT);
    }


    void loop()
    {
    analogWrite(LED1_PIN, 255);
    delay(1000);//Время через которое начнет работу таймер.
    analogWrite(LED1_PIN, 0);
    analogWrite(MOTOR_PIN, 255);
    delay(2000);
    analogWrite(MOTOR_PIN, 0);
    analogWrite(LED2_PIN, 255);
    delay(1000);//Время, через которое сработает таймер.
    analogWrite(LED2_PIN, 0);
    tone(BUZZER_PIN, 4500, 100);//...100)-это время "пищания".
    }

    Почему
    (LED1_PIN, 0) и (MOTOR_PIN, 255) включаются одновременно? И как это исправить?
     
    Последнее редактирование: 22 дек 2014
  9. Максим B

    Максим B Гуру

    А если между (LED1_PIN, 0) и (MOTOR_PIN, 255) поставить delay(2000); ?? Разве так не правильно?
     
  10. maxim 1234

    maxim 1234 Нерд

    А сможете написать скетч для уно, лсд шилд сенсорный,нарисовать на нем 3 кнопки и чтоб они включали и выкл. 3 реле?
    #include <SPFD5408_Adafruit_GFX.h>
    #include <SPFD5408_Adafruit_TFTLCD.h>
    #include <SPFD5408_TouchScreen.h>
    #if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
    #endif


    // Pines necesarios para los 4 pines del panel tactil
    #define YP A1 // Pin analogico A1 para ADC
    #define XM A2 // Pin analogico A2 para ADC
    #define YM 7
    #define XP 6

    // Definimos la presion máxima y minima que podemos realizar sobre el panel
    #define MINPRESSURE 10
    #define MAXPRESSURE 1000

    // Para mejor precision de la presion realizada, es necesario
    // medir la resistencia entre los pines X+ y X-.
    // En Shield TFT 2.4" LCD se mide entre los pines A2 y 6
    // Instancia del panel tactil (Pin XP, YP, XM, YM, Resistencia del panel)
    TouchScreen ts = TouchScreen(XP, YP, XM, YM, 550);

    #define TS_MINX 120
    #define TS_MINY 115
    #define TS_MAXX 945
    #define TS_MAXY 900

    #define LCD_CS A3 // Definimos los pines del LCD
    #define LCD_CD A2 // para poder visualizar elementos graficos
    #define LCD_WR A1
    #define LCD_RD A0
    #define LCD_RESET A4

    #define BLACK 0x0000 // Definimos los colores
    #define BLUE 0x001F // que utilizaremos para
    #define RED 0xF800 // el texto y los elementos graficos
    #define GREEN 0x07E0
    #define CYAN 0x07FF
    #define MAGENTA 0xF81F
    #define YELLOW 0xFFE0
    #define WHITE 0xFFFF

    Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia LCD

    int X; // Variables que almacenaran la coordenada
    int Y; // X, Y donde presionemos y la variable Z
    int Z; // almacenara la presion realizada

    int a = 0; // variable "flag" para control rebotes

    #define ledA 8 // Anodo del led conectado pin digital 5
    #define ledK 9 // Catodo del led conectado pin digital 3

    void setup(void)
    {
    tft.begin(0x9341); // Iniciamos el LCD especificando el controlador ILI9341.
    tft.setRotation(1);
    tft.fillScreen(WHITE); // Pintamos la pantalla de Rojo

    pinMode(13, OUTPUT);
    pinMode(ledA,OUTPUT);
    pinMode(ledK, OUTPUT);

    tft.drawRect(10, 10, 140, 60, WHITE); // Dibujamos un "boton"

    tft.setCursor(50,25); // Colocamos el cursor
    tft.setTextSize(4); // Especificamos el tamaño del texto
    tft.setTextColor(WHITE ); // Definimos el color del texto
    tft.println("OFF"); // Escribimos por pantalla
    }

    void loop()
    {
    lecturaPanel(); // Realizamos lectura del panel para detectar presion y coordenadas

    // Si la pulsación del eje X se produce entre los puntos 40 y 160
    // Y la pulsacion del eje Y se produce entre los puntos 20 y 60
    // Y la presión realizada esta entre el margen determinado
    if((X > 10 && X < 150) && (Y > 10 && Y < 70) && (Z > MINPRESSURE && Z < MAXPRESSURE))
    {
    if (a == 0) // Si la variable flag esta en 0
    {
    tft.fillRect(10, 10, 140, 60, CYAN); // Dibujamos nuestro boton relleno de color

    tft.setCursor(50,25); // Colocamos el cursor
    tft.setTextSize(4); // Especificamos el tamaño del texto
    tft.setTextColor(WHITE ); // Definimos el color del texto
    tft.println("OFF"); // Escribimos por pantalla


    //AQUI REALIZAMOS LA ACCION QUE DESEEMOS: ENCENDER EL LED
    digitalWrite(ledA, HIGH);
    digitalWrite(ledK, LOW);

    a = 1; // Ponemos la variable flag en 1
    delay(200);
    }
    else if (a == 1) // Si la variable flag esta en 1
    {
    tft.fillRect(10, 10, 140, 60, MAGENTA); // Dibujamos el fondo de nuestro boton en cyan

    tft.setCursor(50,25); // Colocamos el cursor
    tft.setTextSize(4); // Especificamos el tamaño del texto
    tft.setTextColor(WHITE); // Definimos el color del texto
    tft.println("ON"); // Escribimos por pantalla

    //AQUI REALIZAMOS LA ACCION QUE DESEEMOS: APAGAR EL LED
    digitalWrite(ledA,LOW);
    digitalWrite(ledK, LOW);

    a = 0; // Ponemos la variable flag en 0 para evitar los rebotes
    delay(150);
    }
    }
    }

    void lecturaPanel()
    {
    digitalWrite(13, HIGH);
    TSPoint p = ts.getPoint(); // Realizamos lectura de las coordenadas
    digitalWrite(13, LOW);

    pinMode(XM, OUTPUT); // La librería utiliza estos pines como entrada y salida
    pinMode(YP, OUTPUT); // por lo que es necesario declararlos como salida justo
    // despues de realizar una lectura de coordenadas.

    // Mapeamos los valores analogicos leidos del panel tactil (0-1023)
    // y los convertimos en valor correspondiente a la medida del LCD 320x240
    X = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0);
    Y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0);
    Z = p.z;
    }





    вот один диод вкл. и выкл.а как сделать для 3 диодов или реле и 3 таких кнопки?