c++ podmienka tlacidlo

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

akou cestou vyrabate dps/pcb

Anketa končí za 27 črc 2014, 20:00

fotocitou
10
71%
nažehlovanim
2
14%
fixka.exe =)
2
14%
 
Celkem hlasů: 14

Zpráva
Autor
Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

c++ podmienka tlacidlo

#1 Příspěvek od SimonHosa »

dobri den uz som zufali programujem v c++ a potrebujem podmienku na tlacidlo ak je pustene nic ak ho stlacim tak sa spusti program alebo jeho cast skusal so nieco v zmysle

int I=0;
int a=PB0;
int b=PB1;

int main (){

if(a=c){
.........
}
}
na bp 0 som dal +5v a na pb 1 +5v cez tlacidlo potom som skusal


if(a=1){
.........
}



potom

if(a==1){
.........
}

a dozralo ma to pri

if(a=+1){
.........
}

za odpovede velmi pekne dakujem

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#2 Příspěvek od FHonza »

Pro jaký to má být procesor ?

int a = PB0 rozhodně neznamená, že v proměnné a se "udržuje" aktuální stav z pinu PB0. Nemluvě o nějaké inicializaci portů...

Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

#3 Příspěvek od SimonHosa »

atmega 8 a tu je celi program

#define Y PB0
#define Z PB2
#define X PB1
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.c"
#include "lcd.h"

int c=Y;
int a=X;
int b=Z;
int I=0;


int main(){
while (1)
{

DDRB |=(1<<X) | (1<<Z) | (1<<Y);
lcd_init(LCD_DISP_ON); //inicializacia displeja

lcd_gotoxy(2,0); // chod na poziciu x=4, y=0
lcd_puts("bomb"); // vypis text

if (c>b){
for (I=0;I<1;I++){


lcd_init(LCD_DISP_ON); //inicializacia displeja

lcd_gotoxy(2,0); // chod na poziciu x=4, y=0
lcd_puts("peciem"); // vypis text
lcd_gotoxy(2,1); // chod na poziciu x=4, y=0
lcd_puts("kolace"); // vypis text
_delay_ms(10000);
lcd_gotoxy(2,0); // chod na poziciu x=4, y=0
lcd_puts(" "); // vypis text
lcd_gotoxy(2,1); // chod na poziciu x=4, y=0
lcd_puts(" "); // vypis text

lcd_gotoxy(2,0); // chod na poziciu x=4, y=0
lcd_puts("grilujem:"); // vypis text


lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("30"); // vypis text
_delay_ms(5000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("29"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("28"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("27"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("26"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("25"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("24"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("23"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("22"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("21"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("20"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("19"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("18"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("17"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("16"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("15"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("14"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("13"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("12"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("11"); // vypis text
_delay_ms(1000);

lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts("10"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 9"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 8"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 7"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 6"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 5"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 4"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 3"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 2"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 1"); // vypis text
_delay_ms(1000);
lcd_gotoxy(3,1); // chod na poziciu x=4, y=0
lcd_puts(" 0"); // vypis text

}
}
}

}

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#4 Příspěvek od berk »

1) Správnost mapování pinů nedokážu posoudit

#define Y PB0
#define Z PB2
#define X PB1
#include <avr/io.h>
int c=Y;
int a=X;
int b=Z;


2) Přiřazení hodnot z pinů do proměnných je provedeno pouze jednou při startu programu a v nekonečném cyklu už se hodnoty proměnných nezmění:

int c=Y;
int a=X;
int b=Z;

int main(){
while (1) {
...

3) Count down ze 30 je evidentně nedostatečný - zkus alespoň z 1000 :-)

4) Některé komentáře jsou zbytečné a nesprávné:
cd_gotoxy(2,0); // chod na poziciu x=4, y=0

Jinde by to zase komentář chtělo:
DDRB |=(1<<X) | (1<<Z) | (1<<Y);

Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

#5 Příspěvek od SimonHosa »

dobre vikaslime sa na lcd ktori tam je ideme jednoduchi prog

#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>

int c=PB0;
int a=PB1;
int b=PB2;
int I=0;
int main(){
DDRB |=(1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3);
if (c=1){ //ako to mam zapisat ze na pinePB0 sa ocitne +5v??

PORTB |=(1<<PB3);
}
}


TAKZE TENTO PROGRAM BY MAL PO PRIVEDENI 5V NA PB0 ZAPNUT PROGRAM ALE NEVIEM TO ZAPISAT sori za caps pri programovani si ho zapnem a potom ho zabudnem vypnut

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#6 Příspěvek od FHonza »

Zběžný pohled: (c = 1) není test, zda c se rovná jedné, ale přiřazení hodnoty jedna do proměnné c. Správně (c == 1)

Z portu určitě nelze číst pomocí konstanty PB0, ta je definována takto:
#define PORTB0 0
#define PB0 PORTB0

Správně podmínka by měla vypadat takto (na portu B je nastaven pin 0):
if (PINB & (1 << PB0))

Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

#7 Příspěvek od SimonHosa »

dakujem velmi pekne funguje to na svet elektre nikto nic nepovedal a este mi dali aj perma ip ban na vsetky fóra

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#8 Příspěvek od FHonza »

Nevim jestli ti to půjde stáhnout, když máš na svetelektro.com ban. Ale stručnou knihu pro začátečníky tam mají ke stažení zde. Nejde nějak do hloubky, ale pro začátek určitě dobrá. Případně kdybys chtěl nějakou literaturu, tak pošli SZ.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#9 Příspěvek od mtajovsky »

Malá poznámka k těm podmínkám:

if(a=1){
.........
}

bude splněno vždy, a=1 sice není podmínka, ale výraz jako takový bude mít hodnotu true. Nejprve se provede přiřazení a pak se vyhodnotí a na true/false.


if(a=+1){

to je to samé, +1 a 1 je ekvivalentní.

Uživatelský avatar
frantajetel11
Příspěvky: 1922
Registrován: 13 lis 2008, 01:00
Bydliště: Kladno

#10 Příspěvek od frantajetel11 »

Sorry za OT, ale ještě bys tam moh udělat hlasování: " Co má společnýho podmienka pro tlačidlo s válcováním plechu" :?

Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

#11 Příspěvek od SimonHosa »

frantajetel11 píše:Sorry za OT, ale ještě bys tam moh udělat hlasování: " Co má společnýho podmienka pro tlačidlo s válcováním plechu" :?
nechapem

Uživatelský avatar
frantajetel11
Příspěvky: 1922
Registrován: 13 lis 2008, 01:00
Bydliště: Kladno

#12 Příspěvek od frantajetel11 »

Já zas nechápu, co má společnýho podmienka pro tlačidlo s výrobou DPS :lol:
Témat o výrobě tišťáků je tady mraky.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#13 Příspěvek od Atlan »

zacinam tusit preco dostal ban :D

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#14 Příspěvek od pocitujlasku »

Atlan: pretoze mal denne x-prispevkov o nicom, pytal sa na zakladne veci, ignoroval odkazy na prestudovanie, i/y daval nahodne...
Nechcem byt prorok, ale asi sa to aj tu coskoro zopakuje.

SimonHosa: nechces si najskor prestudovat zaklady a az potom nieco skusat?
No vidis, a tak si sa bal

Uživatelský avatar
SimonHosa
Příspěvky: 107
Registrován: 22 črc 2014, 02:00
Bydliště: Spišský Štiavnik
Kontaktovat uživatele:

#15 Příspěvek od SimonHosa »

no joo je to hrúza moje i/y je pravdepodobnosť 50 % že sa trafím a co sa tika príspevkov tak som ich založil len 10 a dps s týmto nemá súvis som nechcel nechať nevyplnenú kolónku

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“