Stránka 1 z 2

c++ podmienka tlacidlo

Napsal: 22 črc 2014, 20:00
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

Napsal: 22 črc 2014, 21:23
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ů...

Napsal: 22 črc 2014, 21:27
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

}
}
}

}

Napsal: 23 črc 2014, 00:00
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);

Napsal: 23 črc 2014, 07:10
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

Napsal: 23 črc 2014, 10:50
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))

Napsal: 23 črc 2014, 12:06
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

Napsal: 23 črc 2014, 12:48
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.

Napsal: 24 črc 2014, 01:05
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í.

Napsal: 24 črc 2014, 11:24
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" :?

Napsal: 24 črc 2014, 13:32
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

Napsal: 24 črc 2014, 13:36
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.

Napsal: 24 črc 2014, 14:58
od Atlan
zacinam tusit preco dostal ban :D

Napsal: 24 črc 2014, 19:18
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?

Napsal: 27 črc 2014, 12:14
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