hulp met relais aansturen via touchscreen

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 46
Geregistreerd: 07 Jan 2016, 23:29
Woonplaats: arnhem city

hulp met relais aansturen via touchscreen

Berichtdoor dongolfcabrio » 16 Jan 2016, 19:16

is er iemand die mij kan helpen met het aansturen van een relais met touchscreen
ik heb dit er al in staan alleen gaat mijn relais dan klapperen en geeft geen stabiel contact

ik gebruik een arduino uno
met 2,8 tft touch shield en een 4 kanaals relais board

dit is mijn script

php code
#include <Adafruit_GFX.h> 
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>
#define YP A1
#define XM A2
#define YM 7
#define XP 6
#define MINPRESSURE 1
#define MAXPRESSURE 1000

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 364);

short TS_MINX = 150;
short TS_MINY = 120;
short TS_MAXX = 850;
short TS_MAXY = 891;

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#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);

int X;
int Y;
int Z;

int a = 0;

#define BOXSIZE 110
#define PENRADIUS 3
int oldcolor, currentcolor;

#define open 10



void setup(void)
{
tft.begin(0x9341);

pinMode(10, OUTPUT);



tft.fillScreen(BLACK);//BG COLOR


}
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 > 20 && X < 400) && (Y > 20 && Y < 60) && (Z > MINPRESSURE && Z < MAXPRESSURE))
{
digitalWrite(open, LOW);
digitalWrite(open, HIGH);
}
}

void lecturaPanel()
{

TSPoint p = ts.getPoint(); // Realizamos lectura de las coordenadas



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;
}

Advertisement

Berichten: 46
Geregistreerd: 07 Jan 2016, 23:29
Woonplaats: arnhem city

Re: hulp met relais aansturen via touchscreen

Berichtdoor dongolfcabrio » 17 Jan 2016, 14:49

Zou ik dit met mosfet 3-5v naar 12v high voltage kunnen goedmaken zou dit dan wel stabiel werken

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: hulp met relais aansturen via touchscreen

Berichtdoor shooter » 17 Jan 2016, 18:12

ja tuurlijk klappert het relais op pin 10 want jij stuurt het laag en gelijk weer hoog.
daar moet een tijddelay aan vast zitten en een else tussen.
paul deelen
shooter@home.nl

Berichten: 46
Geregistreerd: 07 Jan 2016, 23:29
Woonplaats: arnhem city

Re: hulp met relais aansturen via touchscreen

Berichtdoor dongolfcabrio » 17 Jan 2016, 21:40

ok hoe kan ik hem dan laten werken als ik hem ingedrukt houdt op de touch dat hij dan aan blijft en zodra ik los laat dat hij weer terug valt

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: hulp met relais aansturen via touchscreen

Berichtdoor shooter » 17 Jan 2016, 23:21

if((X > 20 && X < 400) && (Y > 20 && Y < 60) && (Z > MINPRESSURE && Z < MAXPRESSURE))
{
digitalWrite(open, LOW);}
else{
digitalWrite(open, HIGH);
}
paul deelen
shooter@home.nl

Berichten: 46
Geregistreerd: 07 Jan 2016, 23:29
Woonplaats: arnhem city

Re: hulp met relais aansturen via touchscreen

Berichtdoor dongolfcabrio » 28 Jan 2016, 20:08

hoi allen ik heb nu inmiddels het 3,2 inch scherm met touch en de bij behorende shield voor op de mega
hier heb ik hetzelfde probleem

ik wil dat als ik but1 in gedrukt houd dat er een digitale poort schakelt zodra ik de but1 los laat dat de poort weer sluit

er komt een relay aan die gaat schakelen

dit is de code die ik nu heb

php code
#include <UTFT.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
//#include <UTFT_tinyFAT.h>
//#include <tinyFAT.h>

extern uint8_t SmallFont[];
extern uint8_t BigFont[];
const int ledPin = 13;
const int ledPin1 = 12;


// Remember to change the model parameter to suit your display module!
UTFT myGLCD(ITDB32S,38,39,40,41);
UTouch myTouch( 6, 5, 4, 3, 2);
UTFT_Buttons myButtons(&myGLCD, &myTouch);
void setup()
{
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
myTouch.InitTouch();
myTouch.setPrecision(PREC_HI);

}

void loop()

{
int but1, but2, but3, but4, but5, but6, but7, but8, but9, but10, but11, but12, butX, butY, pressed_button, x, y;
int Status1 = 0, Status2 = 0, Status3 = 0, Status4 = 0, Status5 = 0, Status6 = 0, Status7 = 0, Status8 = 0, Status9 = 0, Status10 = 0; // <== ! You had not initialised these
// Menu
myButtons.setTextFont(SmallFont);
myButtons.setButtonColors(VGA_BLACK, VGA_GRAY, VGA_WHITE, VGA_RED, VGA_WHITE);
but1 = myButtons.addButton(10, 10, 80, 70, "Relay 1");
but2 = myButtons.addButton(110, 10, 80, 70, "Relay 2");


myButtons.drawButtons();



while (true)
{
if (myTouch.dataAvailable())
{
pressed_button = myButtons.checkButtons();



if ((pressed_button==but1) && (Status1 == 0 ))
{
myButtons.drawButton(but1);
Status1 = 1;
digitalWrite(ledPin, HIGH);}
else{
digitalWrite(ledPin, LOW);
}



}}}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp met relais aansturen via touchscreen

Berichtdoor nicoverduin » 28 Jan 2016, 21:10

a) Wanneer wordt status1 op 0 gezet?
b) Daarnaast vraag ik mij af waarom je die drawButton functie uitvoerd?
c) en ik zou al die variabelen die je in de loop hebt of static maken of buiten de functies zetten. Alle variabelen die in een functie zitten worden gewist bij het einde van de functie. Dus status is 0 bij het begin van de functie. Ook al zou hij tussentijds 1 worden.
d) ik heb even in die library gekeken en als ik het goed begrijp geeft hij alleen button nummer terug als deze is ingedrukt en -1 als deze niet is ingedrukt. Dus de redenering klopt niet. Dan zou je moet testen dat als de status = 1 en je krijgt een -1 terug dan is hij weer losgelaten en moet je de status weer 0 maken. NA die test hoef je alleen maar afhankelijk de status de led aan of uit te zetten. Of (wel heel onduidelijk) zo doen:
cpp code
digitalWrite(ledPin,status0);
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: hulp met relais aansturen via touchscreen

Berichtdoor shooter » 28 Jan 2016, 22:46

je doet nog steeds hetzelfde je output is maar een cyclus hoog, want de status =1 dus else is gelijk aktief.
paul deelen
shooter@home.nl

Berichten: 46
Geregistreerd: 07 Jan 2016, 23:29
Woonplaats: arnhem city

Re: hulp met relais aansturen via touchscreen

Berichtdoor dongolfcabrio » 29 Jan 2016, 14:35

hoi bedankt voor jullie reacties wat zet ik hier tussen om hem op pin high te houden en als ik los laat dan pin low

php code
if ((pressed_button==but1))
{
digitalWrite(ledPin, HIGH);
myButtons.drawButton(but1);

digitalWrite(ledPin, LOW);
myButtons.drawButton(but1);

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp met relais aansturen via touchscreen

Berichtdoor nicoverduin » 29 Jan 2016, 21:06

Waarom moet je eigenlijk elke keer die drawButton doen eigenlijk?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 45 gasten