A coleta de água da chuva é uma técnica ancestral presente em todo o mundo. Permite conservar recursos hídricos e aproveitar a água de forma eficiente em residências e fazendas. É essencial em regiões com escassez ou secas frequentes.
Pesquisar neste blog
29/05/2025
26/04/2025
Bloco inteligente de Rede Lógica no AutoCad
![]() |
Demonstração do arquivo |
Clique aqui para fazer o download do arquivo
Palavras chave:
Logical Network Smart Block in AutoCad
Bloque inteligente de red lógica en AutoCad
Logisch netwerk slimme blok in AutoCad
בלוק חכם ברשת לוגי באוטוקאד
Logiese netwerk slimblok in AutoCad
Inteligentny blok sieci logicznej w programie AutoCad
Логическая сеть Smart Block в AutoCad
Blok Pintar Jaringan Logis di AutoCad
Logisk nätverkssmart block i AutoCad
01/04/2025
20/03/2025
14/02/2025
18/12/2024
Bloco de concreto inteligente 14x19x39 no AutoCad
Clique aqui para fazer o Download do arquivo
Palavras Chave :
Concrete block 14x19x39 in AutoCad
Bloque de concreto 14x19x39 en AutoCad
ბეტონის ბლოკი 14x19x39 AutoCad-ში
Betonski blok 14x19x39 u AutoCad-u
AutoCad හි කොන්ක්රීට් බ්ලොක් 14x19x39
Betonblok 14x19x39 in AutoCad
Betonblokk 14x19x39 az AutoCadben
14х19х39 автокадта бетон блок
גוש בטון 14x19x39 באוטוקאד
Blok betonowy 14x19x39 w AutoCad
24/11/2024
Distribuição de Frequências
ni = Quantidade de ocorrências
fi = Frequência Relativa
fi (%) = Frequência Percentual
fac = Frequência Acumulada
fac (%) = Frequência Percentual Acumulada
Fonte - Magalhães e Lima (2001) - Noções de Probabilidade e Estatística Nota - Tabela parcial retirada da tabela original |
Resolução:
1. Ordenação da tabela em ordem crescente com base na classificação da coluna Peso
n = 50 observações
k = √n = √50 = 7,07 = 7 classes
h = ( maior valor - menor valor ) / 7 = ( 95 - 44 ) / 7 = 7,3
K = Número de classes :
K = √n = √50 = 7
h = Amplitude do intervalo
h = ( Maior valor - Menor valor ) / K
h = ( 95 - 44 ) / 7 = 7,28
Li1 = Limite inferior da primeira classe, geralmente o menor valor da variável = 44,0
Ls1 = Limite superior da primeira classe Ls1 = Li1 + h = 44,0 + 7,3 = 51,3
Li2 = Limite inferior da segunda classe = 51,3
Ls2 = Limite superior da segunda classe Ls2 = Li2 + h = 51,3 + 7,3 = 58,6
fi1 = 10 / 50 = ,02
fi2 = 19 / 50 = 0,38
.
.
.
fac1 = ni1 = 10
fac2 = 10 + 19 = 29
fac3 = 29 + 7 = 36
.
.
.
fac1(%) = fi1(%) = 20
fac2(%) = 20 + 38 = 58
fac3(%) = 58 + 14 = 72
.
.
.
21/09/2024
Gerar PDF do google docs e salvar na mesma pasta do drive
Código feito em JavaScript
function ExportGoogleDocAsPDF() {
// Obtém o ID do documento atual
var docId = DocumentApp.getActiveDocument().getId();
// Obtém o arquivo do Google Drive usando o ID do documento
var file = DriveApp.getFileById(docId);
// Converte o documento em PDF
var pdfBlob = file.getAs('application/pdf');
// Obter a pasta do Google Drive onde o documento está localizado
var folder = file.getParents().next(); // Obtém a pasta pai do arquivo
// Salva o PDF na mesma pasta com o mesmo nome do documento, mas com extensão .pdf
folder.createFile(pdfBlob).setName(file.getName() + ".pdf");
Logger.log("PDF gerado e salvo na mesma pasta do Google Drive.");
}
14/09/2024
Caixas de diálogo no google sheets
Objetivo: Divulgar diferentes formas de gerar caixas de diálogo no google sheets
1. Caixa de diálogo para Alerta
![]() |
Alerta |
Código em JavaScript:
function Alerta() {
var ui = SpreadsheetApp.getUi(); // Obtém a interface do usuário para o Google Sheets.
// Mostra um alerta simples
ui.alert('Aviso!', 'Esta é uma caixa de alerta simples.', ui.ButtonSet.OK);
}
2, Caixa de diálogo para Confirmação
![]() |
Confirmação |
function Confirmation() {
var ui = SpreadsheetApp.getUi();
// Mostra uma caixa de confirmação
var response = ui.alert('Confirmação', 'Você deseja continuar?',
ui.ButtonSet.YES_NO);
// Verifica a resposta
if (response == ui.Button.YES) {
ui.alert('Você escolheu "Sim".');
} else {
ui.alert('Você escolheu "Não".');
}
}
3. Caixa de prompt para senha
![]() |
Entrada |
![]() |
Saída gerada |
function showPrompt() {
var ui = SpreadsheetApp.getUi();
// Mostra um prompt para o usuário inserir algo
var response = ui.prompt('Entrada do usuário', 'Digite seu nome:',
ui.ButtonSet.OK_CANCEL);
// Verifica se o usuário clicou em "OK"
if (response.getSelectedButton() == ui.Button.OK) {
var nome = response.getResponseText();
ui.alert('Olá, ' + nome + '!');
} else {
ui.alert('Ação cancelada.');
}
}
Vá em Extensões > Apps Script e crie um novo arquivo HTML chamado dialog.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h3>Caixa de Diálogo Personalizada</h3>
<p>Esta é uma caixa de diálogo personalizada criada com HTML.</p>
<button onclick="google.script.host.close()">Fechar</button>
</body>
</html>
![]() |
Com html |
function CustomDialog() {
var html = HtmlService.createHtmlOutputFromFile('dialog')
.setWidth(300)
.setHeight(200);
SpreadsheetApp.getUi().showModalDialog(html, 'Minha Caixa de Diálogo');
}
5. Caixa de diálogo Não Modal ( Flutuante )
![]() |
Flutuante |
function NonModalDialog() {
var html = HtmlService.createHtmlOutputFromFile('dialog')
.setWidth(500)
.setHeight(100);
SpreadsheetApp.getUi().showSidebar(html);//Abre a caixa de diálogo como uma barra lateral
}
Palavras chave:
Dialog boxes in google sheets
Dialoglodziņi google lopuos .
Диалогон æвæрæнтæ google sheets-ы
Blychau deialog mewn dalennau google
תיבות דו-שיח ב-google sheets
Dialogová okna v google listech
Диалоговые окна в таблицах Google
Dialogfelder in Google Sheets
Ekkewe pworun poraus non ekkewe taropwen google
Casete de dialog în foi de calcul Google02/08/2024
Senha no google sheets
Objetivo : Desenvolver um código para o google sheetss que solicite a senha, caso a senha seja verdadeira então imprima "Senha correta !" caso contrário imprima "Senha incorreta".
![]() |
Figura 1: Autenticação |
![]() |
Figura 2: Senha correta |
Código
function SolicitarSenha() {
var senhaCorreta = "123"; // Defina a senha correta aqui
var ui = SpreadsheetApp.getUi();
var resposta = ui.prompt('Autenticação', 'Por favor, digite a senha:',
ui.ButtonSet.OK_CANCEL);
// Verifica se o usuário clicou em OK
if (resposta.getSelectedButton() == ui.Button.OK) {
var senhaDigitada = resposta.getResponseText();
if (senhaDigitada === senhaCorreta) {
ui.alert('Senha correta !');
} else {
ui.alert('Não autorizado !');
}
} else {
ui.alert('Operação cancelada.');
}
}
06/07/2024
Atalhos de comandos em HTML5
1. div(header>ul>li*3)+section+footer>p
<div></div>
<header>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</header>
<section></section>
<footer>
<p></p>
</footer>
2. div(header>ul>p*2>li*5)+section+footer*2>p+(div*2)
<div></div>
<header>
<ul>
<p>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</p>
<p>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</p>
</ul>
</header>
<section></section>
<footer>
<p></p>
<div></div>
<div></div>
</footer>
<footer>
<p></p>
<div></div>
<div></div>
</footer>
4 .div$*4
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>
5. .div*4
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>
6. .div*5>p
<div class="div">
<p></p>
</div>
<div class="div">
<p></p>
</div>
<div class="div">
<p></p>
</div>
<div class="div">
<p></p>
</div>
<div class="div">
<p></p>
</div>
7. .div$*4>(p$)
<div class="div1">
<p1></p1>
</div>
<div class="div2">
<p2></p2>
</div>
<div class="div3">
<p3></p3>
</div>
<div class="div4">
<p4></p4>
</div>
05/06/2024
Bateria Carregando em HTML
Código em HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bateria</title>
<link href="" rel="" integrity="" crossorigin="">
</head>
<style>
.battery-top {
width: 30px;
height: 10px;
background: black;
margin: 0 auto;
border: 3px solid silver;
border-top-right-radius: 8px;
border-top-left-radius: 8px;
}
.battery-content {
width: 150px;
height: 250px;
background: black;
position: relative;
margin: 0 auto;
border: 3px solid silver;
border-radius: 18px;
}
.charge {
width: 100%;
position: absolute;
bottom: 0;
border-radius: 14px;
animation: battery 8s linear infinite;
}
@keyframes battery {
0% {
height: 0%;
background: red;
}
25% {
height: 25%;
background: orange;
}
50% {
height: 50%;
background: rgb(7, 195, 241);
}
75% {
height: 75%;
background: blue;
}
100%{
height: 100%;
background: rgb(0, 255, 0);
}
}
</style>
<body>
<div class="main">
<div class="battery-top"></div>
<div class="battery-content">
<div class="charge"></div>
</div>
</body>
</html>
02/06/2024
Animação com Hélice rotacional em HTML
Código feito em HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
body{
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
img{
border: 20px solid aqua;
padding: 50px;
border-radius: 50%;
animation: fananim linear infinite;
}
button{
cursor: pointer;
width: 100px;
height: 100px;
padding: 20px 30px;
margin: 0 20px;
font-size: 25px;
font-weight: 550;
border: none;
background-color: silver;
border-radius: 50%;
transition: 0.1s;
}
button:active{
box-shadow: 0px 10px 10px black;
transform: scale(0.95);
}
.main button:nth-last-child(5){
background-color: rgb(0, 255, 0);
}
.main button:nth-last-child(4){
background-color: red;
}
@keyframes fananim {
100%
{
transform: rotate(360deg);
}
}
</style>
<body>
<div>
<img id="img" src="Fan.png" alt="" srcset="">
<button onclick="myfunon()">ON</button>
<button onclick="myfunoff()">OFF</button>
<button onclick="myfun1()">1</button>
<button onclick="myfun2()">2</button>
<button onclick="myfun3()">3</button>
</div>
</body>
<script>
let a=document.getElementById("img");
function myfunon()
{a.style.animationDuration = 3+"s";}
function myfunoff()
{a.style.animationDuration=0+"s";}
function myfun1()
{a.style.animationDuration=1+"s";}
function myfun2()
{a.style.animationDuration=0.5+"s";}
function myfun3()
{a.style.animationDuration=0.1+"s";}
</script>
</html>
Palavras chave:
Animation with Rotational Helix in HTML
Animación con Hélice Rotacional en HTML
Animasi karo Rotational Helix ing HTML
Animasjon med Rotational Helix i HTML
HTMLдеги Rotational Helix менен анимация
Анимация с использованием вращающейся спирали в HTML
אנימציה עם Rotational Helix ב-HTML
Animation leh Helix Rotational oo HTML ah
HTML의 회전 나선을 사용한 애니메이션
16/04/2024
16/12/2023
Sensor DTH22 com ESP32
CÓDIGO
#include <WiFi.h>
#include <Wire.h>
#include "DHTesp.h"
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define DHT_PIN 4 // Pin onde o sensor DHT22 está conectado
float temperatura, umidade;
DHTesp dht;
Adafruit_BME280 bme;
const char* ssid = "USUARIO";
const char* password = "SENHA";
void setup() {
Serial.begin(115200);
delay(1000);
// Inicializa o sensor DHT22
dht.setup(DHT_PIN, DHTesp::DHT22);
//Inicializa o sensor BME280
//Código acima esta como comentario para fins de simulação
//Conecta-se à rede Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando à rede WiFi...");
}
Serial.println("Conectado à rede WiFi");
}
void loop() {
// Leitura do sensor DHT22
temperatura = dht.getTemperature();
umidade = dht.getHumidity();
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.println(" %");
delay(5000);
}
02/12/2023
Inserindo dados na tablela com PHP + ESP32 #10
![]() |
Saída gerada no phpMyAdmin4 |
<?php
$hostname = "localhost";
$username = "root";
$password = "";
$database = "sensor_db";
$conn = mysqli_connect($hostname, $username, $password, $database);
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
echo "Database connection is OK";
echo ('<br>');
$sql = "INSERT INTO dht11 (temperature, humidity) VALUES (24, 45)";
if (mysqli_query($conn, $sql)) {
# code...
echo "\n";
echo "\nNovo registro criado com sucesso !";
}else {
echo "\nErro: ". $sql . "<br>" .mysqli_error($conn);
}
?>
Código em linguagem C para o ESP32:
//https://www.youtube.com/watch?v=VEN5kgjEuh8&ab_channel=AhmadLogs
#include <WiFi.h>
#include <HTTPClient.h>
String URL = "http://192.168.1.12/5 Esp32-Temperatura/test_data.php";
const char* ssid = "XXXX";
const char* password = "XXX";
int temperature = 50;
int humidity = 70;
void setup(){
Serial.begin(115200);
connectWiFi();
}
void connectWiFi(){
WiFi.mode(WIFI_OFF);
delay(1000);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("Conectando no WiFi");
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.print("Conectado em: "); Serial.println(ssid);
Serial.print("IP address: "); Serial.println(WiFi.localIP());
delay(1000);
}
void loop(){
if(WiFi.status() != WL_CONNECTED){
connectWiFi();
}
String postData = "Temperatura = "+String(temperature)+"&humidity="+ String(humidity);
HTTPClient http;
http.begin(URL);
int httpCode = http.POST(postData);
String payload = http.getString();
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
Serial.print("URL: ");Serial.print(URL);
Serial.print("Data: ");Serial.print(postData);
Serial.print("httpCode: ");Serial.print(httpCode);
Serial.print("payload: ");Serial.print(payload);
Serial.println("-------------------");
delay(4000);
}
26/11/2023
Fonte linear retificadora
Objetivo: Desenvolver 1 fonte retificadora de 5 V .
Dados:
Trafo = 24 V
Itrafo = 1 A
30% de Vcp
VCP:
Vp = Vs x √2 = 24 x √2
Vp = 33,94 V
Vcp = Vp - 2 x 0,7 = 33,94 - 2 x 0,2
Vcp = 32,54 V
CAPACITÂNCIA:
C = I / ( 2 x f x Vpp )
C = 1 / ( 2 x 60 (32,54 x 30% )
C = 853 uF = 900 uF
TENSÃO DE ISOLAÇÃO DO CAPACITOR:
Vcap = ( 32,54 x 50% ) + 32,43
Vcap = 48,81 V = 50 V
FUSÍVEL:
Psec = Vsec x Ic = 24 x 1
Psec = 24 W
Ipri = Vpri / Vpri = 24 / 127
Ipri = 378 mA
![]() |
Saída gerada |
Assinar:
Postagens (Atom)